Hyperlaneにおけるリクエストメソッドのフィルタリング
Webアプリケーションは、GET、POST、DELETEなどの異なるHTTPメソッドを扱います。Hyperlaneでは、これらのリクエストをフィルタリングするためのいくつかの方法を提供しています。リクエストを特定のハンドラーにルーティングしたり、ミドルウェアを使用してメソッドを確認したりできます。
Hyperlaneでメソッドをフィルタリングする方法は以下の通りです:
シンプルな読み取り専用のエンドポイントには
#[is_get_method]を使用します。このマクロは、GETリクエスト以外のすべてのリクエストを拒否します。柔軟なルーティングには
#[methods]を使用します。許可するメソッドのリストを渡すことができます。例えば、#[methods("GET", "POST")]はデータの読み取りと作成の両方を許可します。複雑なロジックには手動チェックを使用します。コンテキストからメソッドを取得し、if-else文を使用してレスポンス方法を決定できます。
ルートレベルの制御には
#[filter]を使用します。これをルート定義と組み合わせることで、同じパスに対して異なるメソッド用の特定のハンドラーを作成できます。ロギングやデバッグにはミドルウェアを使用します。メソッドを抽出して、リクエスト属性に追加できます。
APIのベストプラクティス:
- コードをクリーンに保つため、読み取り専用のタスクには
#[is_get_method]を使用してください。 - エンドポイントが複数のリクエストタイプを必要とする場合は、
#[methods]を使用してください。 - サポートされていないメソッドが送信された場合は、405ステータスコードを返してください。
- フィルタを組み合わせて厳格なルールを作成します。メソッド、ホスト、パスの長さを一度にチェックできます。
これらのツールを使用することで、クリーンで整理されたAPIを構築できます。また、コードの可読性とメンテナンス性が向上します。
Project Code: https://github.com/hyperlane-dev/hyperlane
Source: https://dev.to/tengxgfyrz67s/request-method-filtering-35jk