2016-12-23 14 views
0

APIデザインに関する次のブログを読む:https://www.thoughtworks.com/insights/blog/rest-api-design-resource-modelingそれは私に多くの側面をより良く理解するのに役立ちましたが、残る1つの質問があります。REST API:処理ロジックを処理する方法

いくつかのデータを処理し、直接応答を与える機能をどう対処しますか?翻訳する、動く、動かす、動かす、動くと考える動詞どの名詞を持つべきか、GET、PUT、POSTによって呼び出されるべきですか?

P.S.それがGETでなければならない場合、GETリクエストの最大長を処理する方法

答えて

0

これについて私が知っていると伝えます。

GET   // Returns, JUST return 
DELETE  // Delete 
POST   // Send information that will be processed on server 
PUT   // Update a information 

このスキーマは、laravelフレームワーク用です。あなたは、REF内のリンクを読むことが最も興味深いものになる

参考: https://rafaell-lycan.com/2015/construindo-restful-api-laravel-parte-1/

0

あなたは、以下のプロセスを開始する必要があります:

  1. は、システム内のリソース(名詞)を識別します。
  2. GETにすべて応答する必要があります。

翻訳の例を考えてみましょう。ソース言語のすべての単語がリソースであると決めることができます。これは与える:

返すことがあります
http://example.com/translations/en-fr/hello 

Content-Type: text/plain 
Content-Language: fr 

bonjour 

をあなたのプロセスが長時間実行されている場合は、あなたは、クライアントがに投稿することができ、要求キューを作成し、別の(新しい)とそれらを提供する必要がありますプロセスが完了したかどうかを問い合わせることができます。

+0

翻訳は動詞です(翻訳を使用できます).GETで送信されるテキストの長さは制限されます。長時間実行されるプロセスは問題ではありませんが、APIの正確さ(+要求を格納するすべてのロジック)のためにPOST/PUTとGETを実行することは、過度の使用であり、ユーザーフレンドリーではありません。 – Alfons

+0

@ Alfons:この架空の翻訳サービスが基本的に辞書の場合は、リクエストを保存する必要はありません。約4096文字(IE6)のGET要求の制限はそれ以上で十分です。それが長いテキストの翻訳が人が提供するサービスであるGengoのようなものだったら、長期的なプロセスリソースが必要です。実際のケースについて詳しく説明して、より詳細な提案をすることができますか?また、APIの正確さはユーザーフレンドリーではないというご意見に同意します。 WebはAPIの正確さ(RESTfulness)のために非常に正確に機能します。 –

1

これは本当に機能以上に名前を付けることについての議論です。 APIで処理されたロジックを持つことは非常に可能です。名前をつけるだけで十分です。

想像上のAPI時間。そのリソースには/v1/probe/{ID}があり、GET、POST、DELETEに応答します。

私たちはプローブを起動し、プローブが観測したものの計算された磁束変化(完全に構成されたもの)を返すようにしたいとしましょう。本当のことではありませんが、これをオンザフライで計算する必要があるとしましょう。私の勇敢なチームメイトの1人が、計算をGET /v1/1324/calculatefluxにすることに決めました。

私たちが本当のREST-fulの慣行に従っているなら...おっと。突然私たちは名詞を扱っていないのですか? GET /v1/probe/1324/calculatefluxがある場合は、動詞 - calculatefluxを求めているので、RESTfulな方法が壊れています。

私たちはこれにどのように対処しますか?

名前はcalculatefluxです。それは良いことではありません - それはプローブ上のリソースを指定しません。 **この場合、/v1/probe/1324/fluxvalueはより良い名前で、/v1/probe/1324/fluxも有効です。

なぜですか?

RESTFUL APIは、ほぼ例外的にURIに名詞を使用します。各URIはPOST PUTまたはDELETEなど何かを得ることができる特定のものを記述する必要があります。 つまり、処理された値があるときはいつでも、リソースに処理済み(または計算済み)の値を渡す必要があります。この方法では、常に最新のデータ(Fluxの値をいつでも再計算できます)とプローブの状態を変更していない(GETを使用して値を保存していない)ことによってRESTfulのままです。

関連する問題