編集: http パーサーはその後更新され、大幅に変更されました。このため、カスタム HTTP メソッドを追加するのはそれほど簡単ではありませんが、@admix のおかげで、ノード 5.xの関連エントリ ポイントは次のようになります。
switch (ch) {
case 'A': parser->method = HTTP_ACL; break;
case 'B': parser->method = HTTP_BIND; break;
case 'C': parser->method = HTTP_CONNECT; /* or COPY, CHECKOUT */ break;
case 'D': parser->method = HTTP_DELETE; break;
case 'G': parser->method = HTTP_GET; break;
case 'H': parser->method = HTTP_HEAD; break;
case 'L': parser->method = HTTP_LOCK; /* or LINK */ break;
case 'M': parser->method = HTTP_MKCOL; /* or MOVE, MKACTIVITY, MERGE, M-SEARCH, MKCALENDAR */ break;
case 'N': parser->method = HTTP_NOTIFY; break;
case 'O': parser->method = HTTP_OPTIONS; break;
case 'P': parser->method = HTTP_POST;
/* or PROPFIND|PROPPATCH|PUT|PATCH|PURGE */
break;
case 'R': parser->method = HTTP_REPORT; /* or REBIND */ break;
case 'S': parser->method = HTTP_SUBSCRIBE; /* or SEARCH */ break;
case 'T': parser->method = HTTP_TRACE; break;
case 'U': parser->method = HTTP_UNLOCK; /* or UNSUBSCRIBE, UNBIND, UNLINK */ break;
default:
SET_ERRNO(HPE_INVALID_METHOD);
goto error;
}
元の返信:
任意のメソッドを追加するには、ノードにパッチを適用する必要があります。関連するソース行を参照してください。
static inline Persistent<String>
method_to_str(unsigned short m) {
switch (m) {
case HTTP_DELETE: return delete_sym;
case HTTP_GET: return get_sym;
case HTTP_HEAD: return head_sym;
case HTTP_POST: return post_sym;
case HTTP_PUT: return put_sym;
case HTTP_CONNECT: return connect_sym;
case HTTP_OPTIONS: return options_sym;
case HTTP_TRACE: return trace_sym;
case HTTP_PATCH: return patch_sym;
case HTTP_COPY: return copy_sym;
case HTTP_LOCK: return lock_sym;
case HTTP_MKCOL: return mkcol_sym;
case HTTP_MOVE: return move_sym;
case HTTP_PROPFIND: return propfind_sym;
case HTTP_PROPPATCH: return proppatch_sym;
case HTTP_UNLOCK: return unlock_sym;
case HTTP_REPORT: return report_sym;
case HTTP_MKACTIVITY: return mkactivity_sym;
case HTTP_CHECKOUT: return checkout_sym;
case HTTP_MERGE: return merge_sym;
case HTTP_MSEARCH: return msearch_sym;
case HTTP_NOTIFY: return notify_sym;
case HTTP_SUBSCRIBE: return subscribe_sym;
case HTTP_UNSUBSCRIBE:return unsubscribe_sym;
default: return unknown_method_sym;
}
}