Skip to content

Commit e51c4a9

Browse files
committed
feat(connect): middlewareのサンプルを追加
1 parent 629ba42 commit e51c4a9

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

ja/connect/README.md

+28-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,31 @@ Echoサーバとは、送られてきたリクエストの内容をそのまま
2020
{
2121
"key": "value"
2222
}
23-
```
23+
```
24+
25+
`app.use(middleware)` という形で、_middleware_と呼ばれる関数には`request``response`といったオブジェクトが渡されます。
26+
そのため、リクエストみてフィルタリングしたり、任意のレスポンスを返したり出来るようになっています。
27+
28+
Echoサーバでは `req.pipe(res);` という形でリクエストをそのままレスポンスとして流す事で実現されています。
29+
30+
### middlewareをモジュールとして実装
31+
32+
もう少し_middleware_をプラグインらしくモジュールとして実装したものを見てみます。
33+
34+
次の[connect-example.js](#connect-example.js)では、あらゆるリクエストに対して、
35+
`"response text"`というレスポンスを`"X-Content-Type-Options"`ヘッダを付けて返すだけのものです。
36+
37+
それぞれの処理を_middleware_としてファイルを分けて実装し、`app.use(middleware)`で処理を追加しています。
38+
39+
[import errorHandler.js](../../src/connect/errorHandler.js)
40+
41+
[import nosniff.js](../../src/connect/nosniff.js)
42+
43+
[import hello.js](../../src/connect/hello.js)
44+
45+
[import connect-example.js](../../src/connect/connect-example.js)
46+
47+
基本的にどの_middleware_も`app.use(middleware)`という形で拡張でき、
48+
モジュールとして実装すれば再利用もしやすい形となっています。
49+
50+
> **Note** _middleware_となる関数の引数が4つであると、それはエラーハンドリングの_middleware_とするという、connectの独自のルールがあります。

0 commit comments

Comments
 (0)