私は、リクエストパラメータリストが制限を超えるとリクエストボディ(JSON)とget呼び出しをやろうとしています。私は郵便配達/不眠や要求がエラーなしコントローラまで達している介して要求を送信することができています。しかし、「requstBodyは、」コントローラで空です。私はここで何をしないのですか?
@GET
@Path("\path")
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
public Response getResponse(String requestBody) throws IOException { }
私は@POSTで@GETを交換した場合、requestBodyは値を持っています。GET呼び出しのために我々はより多くの何も追加する必要がありますか?
Httpでパラメータを送信するための2つの方法がありますGet
方法は。PathVariable
そして、RequestParam
。このように、送信されたパラメータは、リクエストURLに表示されます。例えば:
www.sampleAddress.com/countries/{parameter1}/get-time?city=someValues
上記要求は、parameter1
パス変数であり、parameter2
リクエストパラメータです。だから、有効なURLの例は次のようになります。
www.sampleAddress.com/countries/Germany/get-time?city=berlin
Javaのコントローラで、これらのパラメータにアクセスするには、パラメータのために特定の名前を定義する必要があります。たとえば、次のコントローラは、要求のこのタイプを受け取ります。
@GetMapping(value = "/countries/{parameter1}/get-time", produces = "application/json; charset=utf-8")
public String getTimeOfCities(
@PathVariable(value = "parameter1") String country,
@RequestParam(value = "city") String city
){
return "the method is not implemented yet";
}
あなたは送信することができますRequestBody
を通じてGet
要求が、それはに応じて推奨されません。このリンク。
はい、あなたはGETで身体を送信することができ、そしていや、そうすることが便利になることはありません。
この精緻elasticsearchウェブサイトは、あまりにもいいです。
特定の言語(特にJavaScriptの)のHTTPライブラリは、GET要求がリクエストボディを持ってすることはできません。実際には、一部のユーザーは、GETリクエストが今まで身体を持つことが許可されていることを驚いています。
真実はそのRFC 7231、RFCでHTTPセマンティクスとを扱っているコンテンツんボディでGET要求にどうするか定義しません!その結果、いくつかのHTTPサーバは、それを可能にし、いくつかの-特にプロキシ・ドントをキャッシュ。
使用したい場合はPost
この方法を、あなたが持ってすることができますRequestBody
あまりにも。あなたはポストの要求によりデータを送信したい場合には、適切なコントローラは次のようになります:
@PostMapping(value = "/countries/{parameter1}/get-time", produces = "application/json; charset=utf-8")
public String getTimeOfCitiesByPost(
@PathVariable(value = "parameter1") String country,
@RequestParam(value = "city") String city,
@RequestBody Object myCustomObject
){
return "the method is not implemented yet";
}
myCustomObject
あなたのコードで定義されたデータのいずれかのタイプを持つことができます。このように、あなたのようにリクエストボディを送信する必要があることに注意してくださいJson
文字列。