9

Spring Web MVC の開発者に質問があります。

簡単に言えば、以前は HTTP DELETE メッセージでリクエスト本文を送信することができましたが、現在はそれができなくなりました。なんで?

詳細に:

を使用してspring-webmvc-4.2.4.RELEASEいます。

@RestController
public class Controller {

    @RequestMapping(value = "/{pathVariable}/deleteAnything", method = RequestMethod.DELETE)
    public ResponseEntity<?> deleteAnything(@PathVariable String pathVariable,
        @Valid @RequestBody Set<Pojo> pojoSet) {
        ...

お送りします

DELETE /anything/deleteAnything HTTP/1.1
Content-Type: application/json
Host: example.com

[ {
  "any field" : "Any value"
} ]

そして例外を取得します

m.m.a.RequestResponseBodyMethodProcessor : Read [java.util.Set<packagename.Pojo>] as "application/json;charset=UTF-8" with [org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@333825a3]
.w.s.m.m.a.ServletInvocableHandlerMethod : Error resolving argument [1] [type=java.util.Set]
HandlerMethod details: 
Controller [packagename.Controller]
Method [public org.springframework.http.ResponseEntity<?> packagename.Controller.deleteAnything(java.lang.String,java.util.Set<packagename.Pojo>)]


org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public org.springframework.http.ResponseEntity<?> packagename.Controller.deleteAnything(java.lang.String,java.util.Set<packagename.Pojo>)
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:151)
    at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:125)
    ...

リクエストボディが削除されたようです。

どこでも HTTP DELETE の代わりに HTTP POST を使用すると、問題なく動作します。

以前は問題なく動作していました (依存関係が非常に複雑であるため、以前に指定できなくて申し訳ありません。お役に立てれば、古い を投稿できますbuild.gradle)。

なぜそれはもう不可能なのですか?

4

2 に答える 2

1

ズールに問題があるようです。ズールがなくても動作します。春は関係ありません。

于 2016-02-26T09:04:30.600 に答える