POST
リクエストを使用してデータを読み取ることはベストプラクティスに反していますか?これに例外はありますか?例えば読み取りアクションを実行するためにデータをPOST
する必要がある認証リクエスト。
多くのパラメーターを必要とするAPI呼び出しがあり、それは基本的にReadアクションです。 URIの制限に達する可能性があるため、GET
リクエストを使用できません。
REST POST
リクエストを使用してデータを読み取ることはベストプラクティスに反することであると聞いています会社のクライアントがアクセスできます。
それを行うべきでない場合、これらのケースに適切に対処するためにAPIをどのように設計すればよいですか?
私が取り組んでいる1つのことは、「ストレージ」サービスAPIを用意することです。基本的に、POST JSONオブジェクトをサービスに送信すると、UUIDが返されます。その後のAPI呼び出しでUUIDをクエリパラメータとして送信すると、ストレージからパラメータ/データを取得しますサービス。一度送信するだけでよいので、同じデータで複数の呼び出しを行う場合に特に便利です。
同様の質問をいくつか読んだ後、RESTは実際にはこの問題を解決するように設計されていません。そのため、JSON-RPCを使用することにしましたRESTより柔軟性があり、この種の問題に対する正しい解決策のようです。
はい、少なくともWCFを使用して機能させることができます。MVCとWeb APIでは、[GET] [POST]
などのメソッドに属性を追加するのとは少し異なります。
RESTデータを読み取るためのPOSTリクエストの使用のベストプラクティス)に違反していると聞いたことがあります。APIは会社のクライアントが一般にアクセスできるようになっています。
もちろん、POSTとしてデータを取得するためにPOSTは、リソースを取得しないシステムでリソースを作成するためのものです。
多くのパラメーターを必要とするAPI呼び出しがあり、それは基本的に読み取りアクションです。 URIの制限に達する可能性があるため、GETリクエストを使用できません。
パラメータの送信に配列を使用するか、パラメータが関連している場合はオブジェクトを作成します
ストレージサービスを使用してリクエストパラメータに対してUUIDを保存する代わりに、TMTの回答を改善する。代わりに、 JSON Web Tokens を使用してステートレスAPIを記述できます。これにより、ストレージ管理の問題が解消され、再利用とキャッシュが可能になります。
フローは次のようになります。
このメソッドはストレージを必要としません。
実際のAPIの実装には、特別な考慮は必要ありません。
トークンが途中で改ざんされないようにします。
状態がないため、データの破損を心配する必要はありません。キャッシュははるかに簡単です。複数のAPIへの適用は簡単で、他のチームメンバーの監督なしで実行できます。
ペイロードが大きすぎる場合、JWTも大きくなる可能性があることに注意してください。 URLの長さが2000文字を超えていないことを確認してください。 1.9KのJSONを試し、1695文字のJWTを取得しました(十分なIMOを超えるはずです)。