Skip to content

Commit

Permalink
feat(connect): middlewareのサンプルを追加
Browse files Browse the repository at this point in the history
  • Loading branch information
azu committed Sep 12, 2015
1 parent 629ba42 commit e51c4a9
Showing 1 changed file with 28 additions and 1 deletion.
29 changes: 28 additions & 1 deletion ja/connect/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,31 @@ Echoサーバとは、送られてきたリクエストの内容をそのまま
{
"key": "value"
}
```
```

`app.use(middleware)` という形で、_middleware_と呼ばれる関数には`request``response`といったオブジェクトが渡されます。
そのため、リクエストみてフィルタリングしたり、任意のレスポンスを返したり出来るようになっています。

Echoサーバでは `req.pipe(res);` という形でリクエストをそのままレスポンスとして流す事で実現されています。

### middlewareをモジュールとして実装

もう少し_middleware_をプラグインらしくモジュールとして実装したものを見てみます。

次の[connect-example.js](#connect-example.js)では、あらゆるリクエストに対して、
`"response text"`というレスポンスを`"X-Content-Type-Options"`ヘッダを付けて返すだけのものです。

それぞれの処理を_middleware_としてファイルを分けて実装し、`app.use(middleware)`で処理を追加しています。

[import errorHandler.js](../../src/connect/errorHandler.js)

[import nosniff.js](../../src/connect/nosniff.js)

[import hello.js](../../src/connect/hello.js)

[import connect-example.js](../../src/connect/connect-example.js)

基本的にどの_middleware_も`app.use(middleware)`という形で拡張でき、
モジュールとして実装すれば再利用もしやすい形となっています。

> **Note** _middleware_となる関数の引数が4つであると、それはエラーハンドリングの_middleware_とするという、connectの独自のルールがあります。

0 comments on commit e51c4a9

Please sign in to comment.