4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

withAdvent Calendar 2021

Day 7

失敗しないREST API

Last updated at Posted at 2021-12-06

Web開発でREST-APIが採用されるケースは未だ多いと思います
ですがREST-APIは思想のようなもので、大した仕様が定義されていません

「REST-APIでやろう」というのはHTTPSでいい感じにやろうやと言っているのと同じくらいルールがない状態です
なんの取り決めもなく進めるとカオスになります

REST-API採用時、最低限のガイドラインとなる仕様やツールを紹介します

[仕様] OpenAPI (Swagger) を使う

OpenAPIはREST-APIを記述するための仕様の1つです。これに従って記述することで秩序が生まれます
例えば、以下のようなIDをkeyにしたDictionary形式のレスポンスはOpenAPIで表現できないのでNGです

{
  "users" : [
    "1": {"name": "hoge"},
    "2": {"name": "fuga"}
  ]
}

REST-APIの簡素な思想と違って、OpenAPIは割と仕様がマッチョです
全部読むのは大変なので、困ったときに見る形でOKだと思います

Version 3以上を使う

Version 3以上を使いましょう。ファイルの先頭に書きます openapi: "3.0.x"
新しいバージョンを使うの理由は、単純にドキュメントの探しやすさです
古いSwaggerのサンプルでは version: 2を使っているケースがあるので注意しましょう

[Viewer] Swagger UI で見る

これはチームで統一されていれば何でもいいと思います
Swaggerが導入しやすいと思うので紹介します

Swagger Editor (Online)

デモの入力欄にコピペすればpreview欄(右側)に反映されます
コピペする手間はありますが、何の準備もいらないので楽です

VSCode プラグイン

VSCodeで開発をしているならこちら
いくつか種類があるようなのでお好きなものを

Docker

Swagger UIの Docker Imageが公開されているので、オンラインデモと同じ環境を自分で構築することができます

自分が試したときはこちらの記事を参考にさせてもらいました
docker-composeでSwagger【Swagger】【Docker】

[Editor] Stoplight Studio で書く

OpenAPI記述をめちゃ楽にしてくれる最高のアプリです

YAML手書きのペイン集 :head_bandage:
YAMLを手書きするにはOpenAPIの知識がそこそこ必要
チームで記述しているとわずかに個人差が出るので統一感がなくなっていく
OpenAPI的に不正な構文でもSwaggerUIがよしなに表示してくれたりするので、間違いに気づけなかったりする

Stoplight StudioならUIに従って書いていくだけなのでほとんど迷いがないです。個人差も出ません

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?