Go Conference

Room A

All

5 mins.

目的

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

詳細

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

2024/3 時点では、自動生成された http エンドポイントごとに、任意のミドルウェアを割り当てる仕組みがありません。 この問題は issue で報告されており、独自の実装が PR で上がっていますが、正式な機能の提供は先送りになっています。 https://github.com/deepmap/oapi-codegen/issues/518

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

  1. OpenAPI に準拠したファイルから REST API サーバを自動生成できる oapi-codegen を紹介

  2. issue で報告されている問題について

    • oapi-codegen によって生成された http エンドポイントごとに、任意のミドルウェアを割り当てられない
  3. issue にリンクされている解決案について

    • OpenAPI 準拠のスキーマファイルに独自のタグを用意して、コード生成時にミドルウェアも挿入される仕組みの説明
  4. 筆者のオレオレ解決案の紹介

    • http ルーティングエンジンは Echo を使います
    • ミドルウェアで echo.Context をラップして、各コントローラーにてミドルウェア相当の処理を実行する仕組みの説明

Appendix

oapi-codegen:

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

Reo Uehara

Reo Uehara

株式会社Finatext

Goとサウナが好き