1. ホーム
  2. post

[解決済み] GETの代わりにPOSTを使用したREST API

2023-02-23 05:54:58

質問

あるサービスが、このように使える機能を提供しているとします。

GET /service/function?param1=value1&param2=value2

POSTクエリで使えるということでいいのでしょうか?

POST /service/function { param1 : value1, param2 : value2 }

この2つのクエリは同じものですか?それとも、GET と POST の両方のクエリを使用できることをドキュメントに明示する必要がありますか?

どのように解決するのですか?

を使用することはできません。 API を使って POST または GET これらのメソッドを別々に呼び出すように構築されていない場合。例えば、あなたのAPIが

/service/function?param1=value1&param2=value2

へのアクセスは GET メソッドでアクセスします。では POST メソッドとして指定されていない場合は POST メソッドとして指定されていない場合。これを実行すると 405 Method not allowed の状態になります。

一般に POST メソッドで指定されたフォーマットでコンテンツをボディに送信する必要があります。 content-type ヘッダで指定されたフォーマットで送信する必要があります。 application/json はjsonデータ用です。

そしてその後、リクエストボディはサーバーエンドでデシリアライズされます。そのため、クライアントからシリアライズされたデータを渡す必要がありますが、それはサービス開発者が決定します。

しかし、一般論として GET はサーバがクライアントにデータを返すときに使われ、サーバには何の影響も与えないのに対して POST はサーバに何らかのリソースを作成するために使用されます。ですから、一般的には同じであってはなりません。