AzureのAPI Managementを触ってみたいと思ってメニューをみたところ、OpenAPIのspecificationファイルを食わせると簡単に設定ができそうな感じでした。
自分で定義を書くのも手間だなぁと、ふと昔どこかで聞いたSprintFoxの存在を思い出しました。Spring Bootで書いたAPIからspecificationを作ってくれるライブラリです。まずは雑なサンプルを試してみようと、GETメソッドhelloだけ置いたコードを用意しました。
@RestController
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping(value="/hello")
public String hello() {
return "hello";
}
}
あとはSpringFoxの依存性を定義して、Configurationのファイルを追加しただけです。
github.com
これをHerokuへdeployして、https://[herokuのアプリ名].herokuapp.com/swagger-ui.html にアクセスするとSwaggerのAPIリファレンスが表示され、helloのGETメソッドが確認できます。
Base URLの下に表示されている https://[herokuのアプリ名].herokuapp.com/v2/api-docs にアクセスするとOpen APIのspecification(といっていいのかな?)がjson形式で表示されます。
このファイルをダウンロードしておきます。(api-docs.json)
続いてAzureのAPI Managementを作成します。
プランは「消費」を選びました。(日本語だと何か違和感ありますが、「CONSUMPTION」プランです)
「API」メニューから「Open API」を選択します。
「select a file」で先ほどダウンロードしたapi-docs.jsonのファイルを選択します。
すると次のような画面が表示されます。今回はGETメソッド hello しか定義していないためerrorが多いですが、ちゃんとGETメソッドが確認できます。
SwaggerのTry it outみたいなtestもコンソールからできました。
認証の処理を差し込んだり、色々できそうです。とりあえず簡単な下地ができたので触っていきたいと思います。