Das @RequestBody-Objekt ist leer und die Lösung für die Ausnahme „Erforderlicher Anforderungstext“ fehlt

     Da bei der Interaktion mit dem Front-End JSON-Daten für die Interaktion mit dem Front-End verwendet werden, müssen Sie die Annotation @RequestBody verwenden, wenn Sie die gesamten übertragenen JSON-Daten herausnehmen möchten. Das Format der gesendeten Daten am Frontend lautet wie folgt:

 
 
//测试发送json数据 $("#id").click(function () { $.ajax({ type: "post", url: "test", contentType: "application/json; charset=utf-8", data: JSON.stringify(getTestJson()), dataType: "json", success: function (data) { alert(data); }, error:function (XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } }); function getTestJson() { var Json = { "a":"aaaaaaa", "b":0, "c":2, }; return Json; } });

 
 
    Wenn das Front-End-AJAX so geschrieben ist und die Daten so übertragen werden, kann das Back-End die vollständigen Daten abrufen. Einzelheiten finden Sie im folgenden Code:
 
 
@RequestMapping(value = "/test",method = RequestMethod.POST) @ResponseBody public String test(@RequestBody String requestJson){ if(requestJson==null||requestJson==""){ return ApiResponse.buildFailResponse(ResultConstant.OPERATOR_FAIL,"请求接口需要传递正确的JSON数据"); }
}

Auf diese Weise können Sie durch Hinzufügen einer @RequestBody-Annotation problemlos alle angeforderten JSON-Daten abrufen und diese dann in JSON-Daten konvertieren

JSONObject ist immer noch ein gewöhnliches JAVA-Objekt für den Betrieb.
    Wenn wir jedoch JSON-Daten übertragen und die JSON-Daten leer sind, wird ein Fehler gemeldet, d. h. der erforderliche Anforderungstext fehlt
Dies bedeutet, dass unsere Schnittstelle Daten im JSON-Format übertragen muss. Wenn keine Daten vorhanden sind, wird ein Fehler gemeldet und falsche Informationen zurückgegeben.
    Im Allgemeinen möchten wir jedoch selbst beurteilen, ob die Daten leer sind. Wenn sie leer sind, geben Sie die Daten in dem mit dem Frontend vereinbarten Format zurück. Das wird der Fall sein
Praktisch für das Front-End-Debugging.
    Wenn Sie nicht möchten, dass das System einen Fehler meldet, müssen Sie @RequestBody ein Required-Attribut hinzufügen und das Attribut wie folgt auf „false“ setzen:
 
 
@RequestMapping(value = "/test",method = RequestMethod.POST) @ResponseBody public String test(@RequestBody(required = false) String requestJson){ if(requestJson==null||requestJson==""){ return ApiResponse.buildFailResponse(ResultConstant.OPERATOR_FAIL,"请求接口需要传递正确的JSON数据"); }
}

Guess you like

Origin blog.csdn.net/unbelievevc/article/details/132894806