利用Node.js为Node.js生成HttpStatusCode辅助类并发布到npm 推荐 原创 破狼 2013-04-09 00:08:26 博主文章分类:Javascript ©著作权 文章标签 Javascript node httpstatuscode 文章分类 Node.js 前端开发 ©著作权归作者所有:来自51CTO博客作者破狼的原创作品,请联系作者获取转载授权,否则将追究法律责任 作为一个好的Restfull Api不仅在于service url的语义,可读性,幂等,正交,作为http状态码也很重要,一个好的Http Status Code给使用者一个很好的响应,比如200表示正常成功,201表示创建成功,409冲突,404资源不存在等等。所以在做一个基于node.js+mongodb+angularjs的demo时发现node.js express没有提供相应的辅助类,但是本人不喜欢将201,404这类毫无语言层次语义的东西到处充斥着,所以最后决定自己写一个,但是同时本人也很懒,不喜欢做重复的苦力活,怎么办?那就从我最熟悉的c#中HttpStatusCode枚举中copy出来吧,最后为了简便在mac上所以采用了利用node.js去解析msdn关于httpstatuscode的文档生成node.js的辅助类。 代码很简单: var http = require('http');var fs = require('fs');var $ = require('jquery');var output = "httpStatusCode/index.js";(function(){ String.format = function() { var s = arguments[0]; for (var i = 0; i < arguments.length - 1; i++) { var reg = new RegExp("\\{" + i + "\\}", "gm"); s = s.replace(reg, arguments[i + 1]); } return s; }; var optiOns= { host:'msdn.microsoft.com', port:80, path:'/zh-cn/library/system.net.httpstatuscode.aspx' }; http.get(options,function (response) { var html = ""; response.on("data",function (chunk) { html += chunk; }).on("end", function () { handler(html); }).on('error', function (e) { console.log("Got error: " + e.message); }); function getHttpStatusCode(htmlString) { var $doc = $(html); var rows = $doc.find("table#memberList tr:gt(0)"); var status = {}; rows.each(function(i,row){ status[$(row).find("td:eq(1)").text()] = parseInt($(row).find("td:eq(2)").text().match(/\d+/).toString()); }); return status; }; function generateCode(status){ var code = ""; code += "exports.httpStatusCode = " + JSON.stringify(status) + ";"; return code; }; function writeFile(code){ fs.writeFile(output, code, function(err) { if(err) { console.log(err); } else { console.log("The file was saved " + output + "!"); } }); }; function handler(html){ var status = getHttpStatusCode(html); var code = generateCode(status); writeFile(code); }; });})(); 代码寄宿在github:https://github.com/greengerong/node-httpstatuscode 最终生成类为: exports.httpStatusCode = { "Continue": 100, "SwitchingProtocols": 101, "OK": 200, "Created": 201, "Accepted": 202, "NonAuthoritativeInformation": 203, "NoContent": 204, "ResetContent": 205, "PartialContent": 206, "MultipleChoices": 300, "Ambiguous": 300, "MovedPermanently": 301, "Moved": 301, "Found": 302, "Redirect": 302, "SeeOther": 303, "RedirectMethod": 303, "NotModified": 304, "UseProxy": 305, "Unused": 306, "TemporaryRedirect": 307, "RedirectKeepVerb": 307, "BadRequest": 400, "Unauthorized": 401, "PaymentRequired": 402, "Forbidden": 403, "NotFound": 404, "MethodNotAllowed": 405, "NotAcceptable": 406, "ProxyAuthenticationRequired": 407, "RequestTimeout": 408, "Conflict": 409, "Gone": 410, "LengthRequired": 411, "PreconditionFailed": 412, "RequestEntityTooLarge": 413, "RequestUriTooLong": 414, "UnsupportedMediaType": 415, "RequestedRangeNotSatisfiable": 416, "ExpectationFailed": 417, "UpgradeRequired": 426, "InternalServerError": 500, "NotImplemented": 501, "BadGateway": 502, "ServiceUnavailable": 503, "GatewayTimeout": 504, "HttpVersionNotSupported": 505 }; 最后考虑到或许还有很多像我一样懒散的人,所以共享此代码发布到了npm,只需要npm install httpstatuscode,便可以简单实用,如下是一个测试demo: var httpStatusCode = require("httpstatuscode").httpStatusCode; var toBeEqual = function (actual,expected){ if(actual !== expected){ throw (actual + " not equal " + expected); }}; toBeEqual(httpStatusCode.OK,200);toBeEqual(httpStatusCode.Created,201);toBeEqual(httpStatusCode.BadRequest,400);toBeEqual(httpStatusCode.InternalServerError,500); console.log(httpStatusCode);console.log("success"); 懒人的文章总是代码多余文字,我喜欢代码说明一切,感谢各位能阅读此随笔。 赞 收藏 评论 分享 举报 上一篇: Node.js connect ECONNREFUSED错误 下一篇:利用Travis CI 让你的github项目持续构建(Node.js为例) 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 【Node.js】-包以及npm基本使用操作 一、包的概念将模块、代码、其他资料聚合成一个文件夹包分类:项目包:主要用于编写项目和业务逻辑软件包:封装工具和方法进行使用要求:根目录中,必须有package.js文件(记录包的清单信息)注意:导入软件包时,引入的默认是index.js模块文件/main属性指定的模块文件二、案例需求:封装数组求和函数的模块,判断用户名和密码长度函数的模块,形成一个软件包/** * 目标:封装数组常用的方法 * 封装 node.js 无涯教程-Node.js - Streams Stream流是使您可以连续地从源读取数据或将数据写入目标的对象,在Node.js中,有四种类型的流- Readabl... nodejs 无涯教程-Node.js - 事件发送 Node中的许多对象都会发出事件,例如net.Server每次对等点连接到它时都会发出一个事件,而fs.readStream... nodejs node.js之npm 1 npm介绍npm是NodeJS一起安装的包管理工具2 常用命令1) 安装npmnpm install2) 查看npm版本npm -v比如我的ubuntu6.4.13 ) 升级npmnpm install npm -g4) npm安装模块,比如安装react-native 0.56版本npm install react-n... node.js npm 安装包 命令行 管理工具 Node.js学习笔记 认识Node.js以及npm使用 文章目录前言基础常识一、认识Node.js下载安装1.1、Node.js的诞生1.2、node.js运行代码的两种方式1.3、node.js与浏览器的部分区别二、创建第一个应用三、npm node.js npm 前端 服务器 v8 打开Node.js 关闭Node.js 要打开Node.js,你可以按照以下步骤操作:打开命令行界面。在Windows上,你可以按住Win键(空格键左边的第二个键)+ R键,然后在弹出的运行窗口中输入cmd1。在命令行中,你可以通过输入node -v(注意有一个空格)来检查Node.js是否已经成功安装。如果命令行显示了Node.js的版本号,那就说明你已经成功安装了Node.js1。要运行一个Node.js程序,你需要先准备一个.js 命令行 根目录 Server Node.js NPM 使用介绍 NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用。 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用 Node.js node.js npm mysql 相关 一 安装node.js 从官网下载mysql 从官网下载安装 npm install mysql -gnpm install express -g之后就可以执行Node脚本连接数据库了二 安装过程中出现的问题1 npm install mysql -g 总是报错,install express也是npm ERR! Linux 4.2.0-36-genericnpm& Linux mysql network software error node.js npm 配置相关 1 安装library 时,在项目目录下使用--save , 比如 npm install adm-zip --save 会将adm-zip 具体版本信息自动配置在 项目的package.json中,不用手动添加了。2 nmp insall 无参数,安装所有需要的library. npm npm和Node.js简介 Node.js Node.js是Javascript的一种运行环境,是对Google V8引擎进行的封装。是一个服务器端的Javascript的解释器。Node.js允许通过Javascript和一系列模块来编写服务器端应用和网络相关的应用。核心模块包括文件系统I/O、网络(HTTP、TCP、UDP JS JS开发 前端 npm 创建 node.js 项目 package.json重要说明package.json是创建任何node.js项目必须要有的一个文件。因为在package.json文件中,有详细的项目描述,包括:(1)项目名称:name(2)版本:version(3)依赖文件:dependencies 等等..1. 创建node.js项目步骤(1) 创建package.json文件(... json node.js 安装包 Node.js npm 详解 Node.js npm 详解一、npm简介安装npm请阅读前辈的文章,很详细的介绍。npm的全称:Node Package Manager.(1)通俗的理解其实从字面意思就可以理解这个产品有什么作用翻译为“Node包管理器”。对,就是Node的包的一个管理工具,目前我尝试的有下载并安装包(npm install [pkg])升级安装包(npm update [pkg])卸载安装包( nodejs 安装包 版本号 配置文件 node.js [Node.js] Node.js Buffers >> node>>fs.readFile('finnish.txt', function(err,data){ console.log(data);});// Output string is not what we want>>fs.readFile('finnish.txt', funct... ide node.js v8 Javascript sed node.js NPM 使用 n=NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。有了 json 安装包 命令行 当前目录 资源库 创建并发布node.js module 创建node.js module. 创建一个文件夹,用来存放module. Cd到新创建的文件夹,运行npm init,会提示输入package的信息。 可以按照这个视频的来输入。Test command可以为空。Package 的名字不能有大写字母,如果要发布到公网,要用不与已有module一样的名字。 输入完后输入yes,或者y, 会生成一个 package.jso node.js json 当前目录 用户名 node.js语言 node.js语法 一:对象和模块作用域:(一):global的概念:1:在之前使用Javascript的过程中,在浏览器中默认声明的变量、函数等都属于全局对象Window。全局对象中的所有变量和函数在全局作用域内都是有效的。2:在Node.js中,默认就是模块化的,默认声明的变量、函数都属于当前文件模块,都是私有的,只在当前模块作用域内可以使用,3:值,可以应用全局对象global。Node.js中的global对 node.js语言 加载 全局变量 全局对象 node.js(一)node.js安装 from:https://www.cnblogs.com/zhouyu2017/p/6485265.html 一、安装环境 1、本机系统:Windows 10 Pro(64位)2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:htt ... node.js 环境配置 环境变量 缓存 Javascript node.js插件 node.js组件 本文主要备忘为Node.js编写组件的三种实现:纯js实现、v8 API实现(同步&异步)、借助swig框架实现。简介首先介绍使用v8 API跟使用swig框架的不同:(1)v8 API方式为官方提供的原生方法,功能强大而完善,缺点是需要熟悉v8 API,编写起来比较麻烦,是js强相关的,不容易支持其它脚本语言。(2)swig为第三方支持,一个强大的组件开发工具,支持为python、lua node.js插件 c/c++ lua Javascript ViewUI 从NodeSource安装Node.js和npm 安装node.js步骤 本次随笔的目的是教大家如何安装 node.js安装第一步:安装node环境下载地址:https://nodejs.org/en/download/ 下载好后 对应一下你的node版本 ,傻瓜式安装。。安装好后 cmd进入命令 查看一下node版本查看npm 版本号 安装完成后系统目录如图所示(其中,npm随安装程序自动安装,作用就是对Node.js依赖的包进行管理) cmd命令 node.js 版本号 node.js的npm安装 我不打算引进node.js的npm安装,但发现node.js通过管理一些包npm实现,或给一个简短的npm。1、npm什么 npm是一个node包管理和分发工具,已经成为了非官方的公布node模块(包)的标准。有了npm,能够非常快的找到特定服务要使用的包。进行下载、安装以及管理已经安装的... json 版本号 命令行 node.js 依赖包