Go Conference

Room A

All

5 mins.

目的

OpenAPI に準拠したファイルから生成された REST API サーバにて、生成ファイルを編集せずに、http エンドポイントごとに任意のカスタムミドルウェア相当の処理を挿入したい人へ向けた Tips を共有したいです。

詳細

Go では OpenAPI 準拠のスキーマファイルから、ボイラープレートコードを生成する oapi-codegen という OSS が提供されています。

2024/06 時点では、生成された http エンドポイントごとに、任意のミドルウェアを割り当てる仕組みがありません。

この問題は issue で報告されており、独自の実装が PR で上がっていますが、正式な機能の提供は先送りになっています。

https://github.com/deepmap/oapi-codegen/issues/518

LT では、以下の項目に絞って説明しようと思います。

  1. OpenAPI に準拠したファイルから REST API サーバを自動生成できる oapi-codegen を紹介
  2. issue で報告されている問題について
    • oapi-codegen によって生成された http エンドポイントごとに、任意のミドルウェアを割り当てられない
  3. 独自の解決案を紹介
    • http ルーティングエンジンは Echo を使います
    • ミドルウェアで echo.Context をラップして、各コントローラーにてミドルウェア相当の処理を実行する仕組みの説明
    • 参考: https://codehex.hateblo.jp/entry/echo-context

Appendix

oapi-codegen:

https://github.com/deepmap/oapi-codegen

Reo Uehara

Reo Uehara

株式会社Finatext

Goとサウナが好き