web-dev-qa-db-ja.com

Spring MVC RESTコントロールでHTTPヘッダ情報にアクセスするにはどうすればいいですか?

私はWebプログラミング全般、特にJavaについては初めてなので、ヘッダーと本体が何であるかを学びました。

私はSpring MVCを使ってRESTfulなサービスを書いています。私は私のコントローラの@RequestMappingで簡単なサービスを作成することができます。私のRESTサービスコントローラで私のメソッドに来るリクエストからHTTPヘッダ情報を取得する方法を理解するのに助けが必要です。ヘッダを解析し、そこからいくつかの属性を取得したいです。

その情報を入手する方法について説明してください。

132
Horse Voice

@RequestHeaderでパラメータに注釈を付けると、パラメータはヘッダ情報を取得します。だからあなたはちょうどこのようなことをすることができます:

@RequestHeader("Accept")

Acceptヘッダーを取得します。

だから ドキュメント から:

@RequestMapping("/displayHeaderInfo.do")
public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,
                              @RequestHeader("Keep-Alive") long keepAlive)  {

}

Accept-EncodingおよびKeep-Aliveヘッダー値は、それぞれencodingおよびkeepAliveパラメーターで提供されています。

そして心配ありません。私たちはみんな何かを手に入れているのです。

238
Vidya

HttpHeadersメソッドパラメータで@RequestHeaderアノテーションを使用すると、すべてのリクエストヘッダにアクセスできます。

@RequestMapping(value = "/restURL")
public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers) {
    // Use headers to get the information about all the request headers
    long contentLength = headers.getContentLength();
    // ...
    StreamSource source = new StreamSource(new StringReader(body));
    YourObject obj = (YourObject) jaxb2Mashaller.unmarshal(source);
    // ...
}
77
Debojit Saikia

例とヘッダーのパラメータで私の解決策はユーザー= "テスト"です:

@RequestMapping(value = "/restURL")
  public String serveRest(@RequestBody String body, @RequestHeader HttpHeaders headers){

System.out.println(headers.get("user"));
}
10
Armando Cordova