Restとその成熟度のレベル

カバー画像についてのRest e seus níveis de maturidade

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