回答編集履歴
2
加筆(追記部分
test
CHANGED
@@ -76,11 +76,13 @@
|
|
76
76
|
|
77
77
|
1. L136: proto.handle() が実行され、この中で req.mehod による切り分けが行われています。
|
78
78
|
|
79
|
-
2. この関数内(L243
|
79
|
+
2. この関数内(L243 付近)の route._handles_method(method) が怪しい。
|
80
80
|
|
81
81
|
|
82
82
|
|
83
|
-
``router.get()``、``router.post()`` 等は **条件付き use() メソッド** と考えて差し支えないと思います。
|
83
|
+
``router.get()``、``router.post()`` 等は **条件付き use() メソッド** と考えて差し支えないと思います。端的に言えば、ミドルウェア登録用ユーティリティ関数ですので、実行できないと機能しないということになります(route.js L192 で実装している様子です)。
|
84
|
+
|
85
|
+
|
84
86
|
|
85
87
|
1. 要求された HTTP_METHOD
|
86
88
|
|
1
追記
test
CHANGED
@@ -63,3 +63,55 @@
|
|
63
63
|
};
|
64
64
|
|
65
65
|
```
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
追記)コメントを受けて
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
ソース(express v4.17.1)を軽く追いかけてみました。
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
1. L136: proto.handle() が実行され、この中で req.mehod による切り分けが行われています。
|
78
|
+
|
79
|
+
2. この関数内(L243 行付近)の route._handles_method(method) が怪しい。
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
``router.get()``、``router.post()`` 等は **条件付き use() メソッド** と考えて差し支えないと思います。
|
84
|
+
|
85
|
+
1. 要求された HTTP_METHOD
|
86
|
+
|
87
|
+
2. 要求された PATH
|
88
|
+
|
89
|
+
に合致するミドルウェア登録用配列が小分けに管理します。
|
90
|
+
|
91
|
+
|
92
|
+
|
93
|
+
router.handle() によって、管理されていたミドルウェア群の条件にあったものを選ぶ仕組みのようです。
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
詳細まで追いかけてませんが、イメージはこう。
|
98
|
+
|
99
|
+
```
|
100
|
+
|
101
|
+
[
|
102
|
+
|
103
|
+
{method:"GET", path:"/hoga", middlewares:[/* middlewares A *./] },
|
104
|
+
|
105
|
+
:
|
106
|
+
|
107
|
+
{method:"GET", path:"/hogu", middlewares:[/* middlewares U *./] },
|
108
|
+
|
109
|
+
:
|
110
|
+
|
111
|
+
{method:"GET", path:"/hogz", middlewares:[/* middlewares Z *./] }
|
112
|
+
|
113
|
+
]
|
114
|
+
|
115
|
+
```
|
116
|
+
|
117
|
+
(/hogu に対して、GET要求されると、 ``[/* middlewares U *./]`` が ``use()`` されていたものとして実行するイメージ)
|