REST APIの仕様である、Swaggerのサンプル(Petstore)をOutSystemsで読み込む(APIを利用するActionを自動生成する)とどうなるか確認してみました。
Table of Contents
swaggerファイルを取り込む手順
http://petstore.swagger.io/にあるサンプルから、swaggerファイルを取得して、OutSystemsのConsume REST APIで読み込んでみました。
Logic>Integrations>RESTを右クリックして、「Consume REST API…」を選択。
swagger形式のAPI定義があるので、現れたポップアップから「ADD ALL METHODS」し、URLとして「https://petstore.swagger.io/v2/swagger.json」を入力。
こんな感じのアクションとして解釈されました。
取込結果の検討
リソース
折角RESTなのに、リソースで分類して表示されないですね。例えばpetリソースであれば、addPetやgetPetが一まとまりになってくれたほうが使いやすいと思うのですが(Swagger UI上ではきちんとまとまっている)。
単純にアルファベット順に表示されるので、リソース単位にswaggerを取り込むなどの対策が必要かもしれません。ドラッグして移動できないか試してみましたが、だめでした。
リクエスト・レスポンス
REST APIのリソース、及びその内部にあるJSONオブジェクトはStructureに、配列はListにマッピングされるようです。
swaggerから自動生成されたStructureはData>Structures>「REST API名」(Logicに表示されるのと同じ名前。この場合は「SwaggerPetstore」)の下にありました。
APIドキュメント上に表示される想定されるHTTPステータスはアクションからは見られないようですが、公式ドキュメント(Handling REST Errors)によると、400以上のステータスが変えると、OutSystems内で例外を投げるそうです。
認証
手で作ったREST APIでは、AuthenticationがNone/Basic/Customで選択できたのですが、swaggerから作った方は、認証方式を選択するプロパティ自体がありませんね。
Basic認証用のユーザIDとパスワードを指定する場所だけがあります。
Simple Customizationsを見ると、Advanced>On Before RequestプロパティでNew OnBeforeRequestを選択し、作成されたOnBeforeRequestアクション中でヘッダを変更できるようなので、認証はほとんどこっちで実装する感じでしょうか。