좋은 Restfull API는 서비스 URL의 의미, 가독성, 멱등성 및 직교성에 따라 달라질 뿐만 아니라, 좋은 HTTP 상태 코드는 사용자에게 200과 같은 좋은 응답을 제공합니다. 201은 생성 성공, 409 충돌, 404 리소스 없음 등을 의미합니다. 그래서 node.js mongodb anglejs를 기반으로 데모를 만들 때 node.js express가 해당 보조 클래스를 제공하지 않는다는 사실을 발견했습니다. 하지만 언어 수준의 의미가 없는 201,404와 같은 내용이 여기저기 넘쳐나는 것을 좋아하지 않았기 때문에 드디어 제가 직접 작성하기로 결정했습니다. 하지만 동시에 저는 매우 게으르고 반복적인 노력을 하는 것을 좋아하지 않습니다. 그런 다음 나에게 가장 친숙한 C#의 HttpStatusCode 열거형에서 복사합니다. 마지막으로 Mac에서는 단순화를 위해 node.js를 사용하여 httpstatuscode에 대한 msdn 문서를 구문 분석하여 node.js 보조 클래스를 생성했습니다.
코드는 매우 간단합니다.
var http = require('http') ;
var fs = require('fs');
var $ = require('jquery');
var 출력 = "httpStatusCode/index.js";
(function(){
String.format = function() {
var s = 인수[0];
for ( var i = 0; i < 인수.길이 - 1; i ) {
var reg = new RegExp("\{" i "\}", "gm");
s = s.replace(reg, 인수[i 1]);
}
return s;
};
var 옵션 = {
호스트:'msdn.microsoft.com',
포트:80,
경로:'/zh-cn /library/ system.net.httpsstatuscode.aspx'
};
http.get(옵션,함수(응답) {
var html = "";
response.on("data",함수(청크) {
html = 청크;
}).on("end" , function ( ) {
handler(html);
}).on('error', function (e) {
console.log("오류 발생: " e. message);
});
function getHttpStatusCode(htmlString) {
var $doc = $(html) ;
varrows = $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());
});
반환 상태;
} ;
function generateCode(status){
var code = "";
code = "exports.httpStatusCode = " JSON. stringify(상태) ";";
반환 코드;
};
function writeFile(code){
fs .writeFile( 출력, 코드, 함수(err) {
if(err) {
console.log(err);
} else {
console.log("파일이 저장되었습니다" 출력 "!");
}
})
함수 핸들러(html){
var status = getHttpStatusCode(html);
var code = generateCode(status);
writeFile(code) ;
};
});
})();
코드는 github에서 호스팅됩니다: https://github.com/greengerong/node-httpsstatuscode
최종 생성된 클래스는 다음과 같습니다.
코드 보기
exports.httpStatusCode = {
"계속": 100,
"전환 프로토콜": 101,
"확인": 200,
"생성됨": 201,
"수락됨": 202,
" NonAuthoritativeInformation": 203,
"NoContent": 204,
"ResetContent": 205,
"PartialContent": 206,
"MultipleChoices": 300,
"모호함": 300,
"영구적으로 이동됨": 301,
"이동됨": 301,
"발견됨": 302,
"리디렉션": 302,
"기타 보기": 303,
"리디렉션 방법 ": 303 ,
"NotModified": 304,
"UseProxy": 305,
"Unused": 306,
"TemporaryRedirect": 307,
"RedirectKeepVerb": 307,
" BadRequest": 400,
"승인되지 않음": 401,
"PaymentRequired": 402,
"Forbidden": 403,
"NotFound": 404,
"MethodNotAllowed" : 405,
"허용되지 않음": 406,
"ProxyAuthenticationRequired": 407,
"RequestTimeout": 408,
"충돌": 409,
"사라짐": 410,
"LengthRequired": 411,
"PreconditionFailed": 412,
"RequestEntityTooLarge": 413,
"RequestUriTooLong": 414,
"UnsupportedMediaType": 415,
"RequestedRangeNotSatisfiable": 416,
"예상 실패": 417,
"업그레이드 필수": 426,
"InternalServerError": 500,
"NotImplemented": 501,
"BadGateway": 502,
"ServiceUnavailable": 503,
"GatewayTimeout": 504,
"HttpVersionNotSupported": 505
};
마지막으로 저처럼 게으른 사람이 많을 수도 있다는 점을 고려하여 이 코드를 공유하고 npm에 게시했습니다. 간단하고 실용적으로 만들기 위해서는 npm install httpstatuscode만 있으면 됩니다.
코드 복사