マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

JSONを返すWebAPIを、ざっくりREST APIとか
言っているケースが多いので、定義を明らかにする。

広義

2000年にRoy Fielding氏が提唱した、分散システムにおいて
複数のソフトウェアを連携させるのに適した設計原則の集合。

狭義

上記の設計原則をWebに適用したソフトウェアの設計様式
(一般的には、コチラの狭義の意味が用いられている)

一般によく使われる狭義のREST

RESTの設計原則(抽象的な概念)

Fielding氏が示したRESTの設計原則(抽象的な概念)。

理論上はHTTPやXMLとはまったく無縁なRESTシステムもあり得る。

設計ポイント

RESTは疎結合で、不特定多数の開発者を相手にする場合は優れた方法らしい。

コレを実現するRESTの設計のポイントだが、ざっくり、
以下手順により、指定のURIで指定のリソースに対する操作を実現する。

・・・翌々見てみると、RESTはデータ中心が過ぎるので、
機能中心のURIにしたい場合などの要件もあるため、
WebAPIを、完全に、このREST基準に準拠させなくてもイイ気がする。

このようなケースには、JSON-RPCが適合するかもしれない。

リソースを決定する。

リソース

記事, コメント, タグ, カテゴリなど。

操作

親子関係

URIを決める。

ディレクトリ or サブドメイン

2つの方法がある。

バージョン

リソースの関係性

リソース名は複数形の名詞のみで構成し、IDを指定して特定する。

親子関係がある場合、以下のように関係性を表す。

動詞ではなく名詞を使う

操作はHTTPメソッドで決める。

ページング

その他

HTTPメソッドを決定する。

POST, GET, PUT, DELETEを使用する。

POST(生成)

GET(読み取り)

リソースを取得する。

PUT(更新)

DELETE(削除)

リソースを削除をする。

その他

リターンを決める。

HTTPステータスコード

個別

共通

HTTPヘッダ

一貫性のあるエラーペイロード

{
    "messageID": "xxxxx",
    "message": "yyyy yyyy yyyy.",
}

バージョン

バージョン情報が省略されている場合、既定値を使用

URIのバーション

http://api.{ドメイン名}/{version}/.../

クエリ文字列のバージョン

http://api.{ドメイン名}/.../?version={version}

ヘッダーのバージョン

GET https://... HTTP/1.1
Custom-Header: api-version={version}

MIMEタイプのバージョン

前述のAPIのバージョンに加え、
MIMEタイプのバージョンを指定。

GET https://....com/.../{version} HTTP/1.1
Accept: application/vnd.....v1+json

Swagger (OpenAPI)

参考


Tags: :.NET開発, :通信技術, :.NET Standard, :.NET Core, :ASP.NET, :ASP.NET Web API


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS