Mam pytanie do twórców Spring Web MVC.Spring Web MVC: nie jest już możliwe wysyłanie żądania dla HTTP DELETE
Krótko mówiąc: wcześniej możliwe było wysłanie treści żądania w wiadomości HTTP DELETE, ale teraz nie jest to już możliwe. Czemu?
w szczegółach:
Używamy 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) {
...
mobilna
DELETE /anything/deleteAnything HTTP/1.1
Content-Type: application/json
Host: example.com
[ {
"any field" : "Any value"
} ]
i uzyskać wyjątek
m.m.a.RequestResponseBodyMethodProcessor : Read [java.util.Set<packagename.Pojo>] as "application/json;charset=UTF-8" with [org.springfr[email protected]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)
...
Wydaje się, że ciało wniosek został usunięty.
Jeśli używamy HTTP POST zamiast HTTP DELETE wszędzie, to działa dobrze.
Wcześniej pracował grzywny (przepraszam, że nie można określić poprzednio ponieważ nasze zależności są bardzo skomplikowane. Jeśli to pomaga, mogę pisać starą build.gradle
).
Dlaczego nie jest to już możliwe?
Co zmieniłeś, ponieważ zadziałało? – Ralph
@Ralph: nic nie zmieniliśmy. W naszym 'build.gradle' mamy zależności takie jak' compile 'org.springframework.security:spring-security-web:4.0. +' ', Więc być może każda zależność została automatycznie zaktualizowana przez gradle. –
Jak wysłać prośbę? – shazin