Restとその成熟度のレベル
Restについて私たちが知っていること:
- 多くの開発者が「既にRESTを使いこなせる」;
- Representational state of transfer(表現的状態転送);
- 2000年にRay Fieldingが博士論文で発表;
- シンプルさ;
- 状態を保持しない(ステートレス);
- キャッシュ可能;
REST: 成熟度のレベル(リチャードソン成熟度モデル)
- レベル0 - POX:
成熟度レベル0は、URI、HTTPメソッド、Hypermedia(HATEOAS)の機能を活用していないアプリケーションを意味します。
POSTとGETの動詞のみを使用するこの一般的なモデル例を見てみましょう:
POST - http://localhost:3005/products/saveProduct
GET - http://localhost:3005/products/getProduct/628bd53ff6a8e68c40859468
つまり... RESTとは全く関係なく、RESTfulからも遠いです。
- レベル1 - リソース:
成熟度レベル1は、URIの効率的な活用を考慮しています。リソースはマッピングされていますが、動詞の使用法は効率的ではありません。
- レベル2 - HTTP動詞(HTTP VERBS):
成熟度レベル2は、効率的なURIとHTTP動詞の使用を考慮しています。
このレベルのAPIは、以下のHTTP動詞をサポートしています:
– HTTP POST: データベースにレコードを作成するために使用されます。
– HTTP GET: データベースからレコードを読み取るために使用されます。
– HTTP PUT: データベースの特定のレコードを更新するために使用されます。
– HTTP PATCH: データベースの特定のレコードの一部を更新するために使用されます。
例:
POST /products
{
name: "Notebook Samsung Book Np550 Celeron"
description: "4gb 500gb 15.6 W11 Cinza"
}
HTTP/1.1 201 Created
Location: /products/628bda5a314e825e8965e05a
- レベル3 - HATEOAS:
レベル3、通称_Hypermedia as the Engine of Application State_では、Roy FieldingはAPIがRESTfulであると考えるための必要条件としてHATEOASを記述しています。
例:
参考文献:
サンプルコード:https://github.com/williamkoller/rest-example-with-nestjs
お役に立てれば嬉しいです <3;
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/williamkoller/rest-e-seus-niveis-de-maturidade-3mf2