編集-これは解決されました、エラーは私の春の構成にありました。<mvc:annotation-driven/>
私はタグを逃していました。追加すると、すべてが期待どおりに機能しました。
Spring MVCを使用して、リクエストのコンテンツタイプがである場合にのみHTTP GET
アドレスへのリクエストを受け入れるコントローラーを定義しました。また、データを返すため、その形式のデータを受け入れるリクエストのみが通過する必要があります。ただし、これは機能しません。/controllertest
application/json
application/json
これはSpring3.2.0を使用した私のコードです。
package test.controllers;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/controllertest")
public class TestController {
@RequestMapping(method = GET, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public String helloJSON() {
return "{\"message\":\"HelloWorld\"}";
}
}
これは私が期待することです:
- 応答
GET
を受け取る以外のHTTPメソッドを使用する場合405 - Method not allowed
- 受け入れないリクエストを送信した場合、応答
application/json
を受け取る必要があります。406 Not Acceptable
- 私以外のContent-Typeでリクエストを送信すると、応答
application/json
を受け取る必要があります。415 Unsupported Media Type
これが実際の結果です。
- 私は実際に取得し
405 - Method not allowed
ます。非常に素晴らしい。 Accept
ヘッダー付きのリクエストを送信すると、応答が返されます。メソッドが生成するのは。だけですがtext/xml
、200 - OK
応答のコンテンツタイプはです。text/xml
application/json
- コンテンツタイプがであるリクエストを送信すると
text/xml
、200 - OK
応答が返されます。
私はこれらすべてをジャージーで実装し、結果はすべて正しかったと付け加えるかもしれません。