リクエストボディを持つGETコール - コントローラにアクセスすることはできませんリクエストボディ

バインイース:

私は、リクエストパラメータリストが制限を超えるとリクエストボディ(JSON)とget呼び出しをやろうとしています。私は郵便配達/不眠や要求がエラーなしコントローラまで達している介して要求を送信することができています。しかし、「requstBodyは、」コントローラで空です。私はここで何をしないのですか?

@GET
@Path("\path")
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
public Response getResponse(String requestBody) throws IOException { }

私は@POSTで@GETを交換した場合、requestBodyは値を持っています。GET呼び出しのために我々はより多くの何も追加する必要がありますか?

ハミドghasemi:

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文字列。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=223093&siteId=1