मेरे पास स्प्रिंग वेब एमवीसी के डेवलपर्स के लिए एक प्रश्न है।स्प्रिंग वेब एमवीसी: HTTP DELETE के लिए कोई अनुरोध निकाय संभव नहीं है
संक्षेप में: पहले एक HTTP डिलीट संदेश में अनुरोध निकाय भेजना संभव था, लेकिन अब यह अब संभव नहीं है। क्यूं कर?
विस्तार में:
हम 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.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)
...
ऐसा लगता है कि अनुरोध शरीर हटा दिया गया है मिलता है।
यदि हम हर जगह HTTP DELETE के बजाय HTTP POST का उपयोग करते हैं, तो यह ठीक काम करता है।
पहले यह ठीक काम किया (खेद है क्योंकि हमारी निर्भरता बहुत जटिल हैं कि मैं पहले निर्दिष्ट नहीं कर सकते। यदि यह आप में मदद करता है, मैं पोस्ट कर सकते हैं एक पुराने build.gradle
)।
अब और क्यों संभव नहीं है?
तो यह काम करने के बाद से आपने क्या बदल दिया? – Ralph
@ राल्फ: हमने कुछ भी नहीं बदला। हमारे 'build.gradle' में हमारे पास' compile 'org.springframework.security:spring-security-webliament.0। +' 'जैसी निर्भरताएं हैं, इसलिए शायद किसी भी निर्भरता को धीरे-धीरे क्रमशः अपडेट किया गया है। –
आप अनुरोध कैसे भेजते हैं? – shazin