私はURLパターンの動詞ではなく名詞に焦点を当てた安らかなAPIについてインターネット上で勉強しましたが、今ではURLに動詞を使用する複数のリンクを見ています。
以下に例を示します。
- POST/v1/payments/authorization/<Authorization-Id>/capture
- POST/v1/payments/authorization/<Authorization-Id>/void
- POST/v1/payments/authorization/<Authorization-Id>/reauthorize
これはPaypal apiです。 Paypal API
wikipediaのHTATEOASページでも例を挙げています。
<?xml version="1.0"?>
<account>
<account_number>12345</account_number>
<balance currency="usd">100.00</balance>
<link rel="deposit" href="/account/12345/deposit" />
<link rel="withdraw" href="/account/12345/withdraw" />
<link rel="transfer" href="/account/12345/transfer" />
<link rel="close" href="/account/12345/close" />
</account>
リンク:Wiki [〜#〜] hateoas [〜#〜]
誰も私がこれについていくらか明確にするのを手伝うことができますか?なぜ 'capture'、 'void'、 'deposit'、 'withdraw'、 'close'がURIにあるのは、それらがすべて名詞ではなく動詞だからです。
または、rest-full apis urlでこれらの種類の単語を使用しても大丈夫ですか?
REST API Design Rulebook のさまざまなリソースタイプに関するスニペット:
ドキュメント
ドキュメントリソースは、オブジェクトインスタンスまたはデータベースレコードに類似した特異な概念です。
例:
http://api.soccer.restapi.org/leagues/seattle/teams/trebuchet
コレクション
コレクションリソースは、サーバーが管理するリソースのディレクトリです。クライアントは、コレクションに追加する新しいリソースを提案できます。ただし、新しいリソースを作成するかどうかは、コレクション次第です。
例:
http://api.soccer.restapi.org/leagues/seattle/teams
ストア
ストアは、クライアント管理のリソースリポジトリです。ストアリソースを使用すると、APIクライアントはリソースを入れたり、戻したり、削除するタイミングを決定したりできます。店舗自体は、新しいリソースを作成しません。したがって、ストアは決して新しいURIを生成しません。代わりに、保存された各リソースには、最初にストアに配置されたときにクライアントによって選択されたURIがあります。
例:
PUT /users/1234/favorites/alonso
コントローラー
コントローラーリソースは手続き型の概念をモデル化します。コントローラーリソースは、パラメーターと戻り値を備えた実行可能関数に似ています。入力および出力。
従来のウェブアプリケーションでのHTMLフォームの使用と同様に、REST APIは、コントローラリソースに依存して、標準メソッド(作成、取得、更新、 CRUDとも呼ばれます)。
コントローラー名は通常、URIパス内の最後のセグメントとして表示され、階層内でコントローラーの後に続く子リソースはありません。
例:
POST /alerts/245743/resend
本の定義に基づいて、投稿したURIはおそらくControllerリソースタイプに該当します。
ルール:動詞または動詞句をコントローラー名に使用する必要があります
例:
http://api.college.restapi.org/students/morgan/register
http://api.example.restapi.org/lists/4324/dedupe
http://api.ognom.restapi.org/dbs/reindex
http://api.build.restapi.org/qa/nightly/runTestSuite
完全を期すための他の命名規則
- ルール:ドキュメント名には単数形の名詞を使用する必要があります
- ルール:コレクション名には複数名詞を使用する必要があります
- ルール:店名には複数名詞を使用する必要があります
RESTでは、動詞はHTTPメソッドです。あなたの例ではPOST
ですが、GET
、PUT
、またはDELETE
の場合もあります。
名詞は、URLで識別されるリソースです。あなたの例では、「名詞」は/v1/payments/authorization/<Authorization-Id>/capture
などです。
ご覧のとおり、capture
は動詞であるため、これは実際には名詞ではありません。支払い承認を取得します。これは、コマンドではなく動詞であり、物ではなく名詞なので、RESTfulではありません。
より良い方法は、これらのコマンドを/v1/payments/authorization/<Authorization-Id>/capturecommand
のようなものとしてモデル化することです。このコマンドは、名詞です。たとえば、成功したかどうか、結果は何であるかなどの状態を持つことができます。
RESTfulであると主張するコードとそうでないコードがたくさんあります。
トリックは、CRUD動詞で動作するすべての名詞(またはエンティティ)にすることです。
代わりに;
POST /v1/payments/authorization/<Authorization-Id>/capture
POST /v1/payments/authorization/<Authorization-Id>/void
POST /v1/payments/authorization/<Authorization-Id>/reauthorize
これを行う;
capture -> POST /v1/payments/authorization/<Authorization-Id>
void -> DELETE /v1/payments/authorization/<Authorization-Id>
reauthorize -> delete first then create again.