2016-08-02 2 views
3

プロセスメソッドのRESTful Webサービスの設計方法を知りたいと思います。たとえば、特定の従業員IDに対してProcessPayrollのREST APIを作成したいとします。 ProcessPayrollは時間のかかる仕事なので、メソッド呼び出しからの応答は必要ありませんが、ProcessPayrollメソッドを非同期に呼び出して戻りたいだけです。 URLでProcessPayrollを使用することはできません。なぜなら、リソースではなく動詞ではないからです。だから、私はプロセスメソッドを呼び出すためのRESTful APIの設計

要求1

http://www.example.com/payroll/v1.0/payroll_processor POST

以下の方法で行くことができる、と考え{ "社員": "123" }

リクエスト2

http://www.example.com/payroll/v1.0/payroll_processor?employee=123get

上記のアプローチのどちらが正しいですか?プロセスのメソッドや関数のためのRestfulサービスを作成するための、Restful API Designのガイドラインはありますか?

答えて

1

私のプロジェクトでも同様の解決策がありましたので、私の意見が間違っていると非難しないでください。私たちの経験を共有したいだけです。

リソース自体に関するどのような - ジョブをバックグラウンドで実行されるようになっていると私は

http://www.example.com/payroll/v1.0/payrollRequest POST 

のようなものをお勧めしたい、API呼び出しがAccepted (202) HTTPコードを返す必要があります。これは、操作に多くの時間がかかることをユーザーに伝えます。しかし、ユーザーが呼び出すことにより、後に掲載のリソースを取得できるようにするためにpayrollRequestId固有の識別子(例えばGuid)を返す必要があります:

http://www.example.com/payroll/v1.0/payrollRequest/{payrollRequestId} GET 

希望、これは上記のアプローチの一つが正しい

2

を支援1?

のうち、POSTが最も近いものです。

GET/mumbleを使用する際の問題は、GETメソッドの仕様が "安全"な操作にその使用を制限することです。つまり、彼らは何らかの形でリソースを変更しないということです。言い換えれば、GETは、必要に応じて、ユーザーエージェントとキャッシュによって途中でリソースをプリフェッチできることを約束します。

プロセスメソッドと関数のRestfulサービスを行うためのRestful API Designガイドラインはありますか?

ジムウェバーには、この種のことについて話し合う記事や話がたくさんあります。 How to GET a cup of coffeeで開始してください。

しかし、大まかなプロットは、REST APIがプロセスとコンシューマ間の統合コンポーネントとして機能することです。プロトコルは、1つまたは複数のリソースの操作として実装されます。

したがって、給与計算依頼を提出する方法(Webフォームを考える)を伝える既知のブックマークがあります。その要求を提出すると(通常はPOST、時にはPUT、詳細は重要でない場合もあります) (1)メッセージ内のデータからProcessPayrollのインスタンスを開始し、(2)そのインスタンスを名前空間の新しいリソースにマップし、(3)給与インスタンスを追跡するリソースにリダイレクトします。

単純なWeb APIでは、この新しいリソースのコピーを更新し続けるだけです。 REST APIでは、そのリソースは、使用可能なアクションを記述するリソースのハイパーメディア表現を返します。

Webberは言うとおり、HTTPはドキュメント転送アプリケーションです。あなたのWeb APIはドキュメント要求を処理し、その処理の副作用としてドメインアプリケーションプロトコルとやりとりします。言い換えれば、多くのリソースがちょうどメッセージです....

0

あなたがポストを決定し、あなたの残りのAPIが行の任意の新しいを作成する場合はワーク・

  1. APIに基づいて取得しますDB(DB内の新しいリソースを意味します)では、POSTのために移動する必要があります。あなたの給与プロセスメソッドがリソースを作成する場合は、POSTを選択する必要があります。

  2. あなたのRest APIが両方を行う場合は、リソースを作成して更新してください。あなたの給与方法がデータを処理して更新し、新しいデータを作成する場合は、PUTに行く

  3. あなたの残りのAPIがデータを読み込んだだけの場合は、GETに進みます。しかし、私はあなたの質問からあなたの給与方法は、データを送信しないと思う.GETあなたの場合に最適ではありません。

あなたの給与計算方法は両方のことを行っていると思います。

  1. プロセスデータは、DBに

NOTE新しい行を作成することを意味、

  • が新しいデータを作成し、データと

    の更新を意味します - もう一つの、PUTは冪等であり、 POSTはできません。リンクをフォローしてくださいPUT vs POST in REST

    あなたはPUTメソッドに行く必要があります。

  • 関連する問題