spring 可以通过 @RequestBody 以外的方式映射 POST 参数
Can spring map POST parameters by a way other than @RequestBody
我正在将 @RestController
s 与所有请求都是 POST
请求的应用程序一起使用...正如我从 this post 中了解到的那样,您无法映射个人 post 参数到各个方法参数,而是需要将所有参数包装在一个对象中,然后将此对象用作用 @RequestBody
注释的方法参数,因此
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestParam(value="idNumber") String idNumber , @RequestParam(value="applicationId") String applicationId) {
return customerService.requestOTP(idNumber, applicationId);
不适用于正文 POST
请求 {"idNumber":"345","applicationId":"64536"}
我的问题是我有 很多 的 POST
请求,每个请求只有一个或两个参数,创建所有这些对象会很乏味只是为了在里面接收请求...那么有没有其他类似于处理获取请求参数(URL参数)的方式?
我已经更改了您的代码,请检查
DTOClass
public class DTO1 {
private String idNumber;
private String applicationId;
public String getIdNumber() {
return idNumber;
}
public void setIdNumber(String idNumber) {
this.idNumber = idNumber;
}
public String getApplicationId() {
return applicationId;
}
public void setApplicationId(String applicationId) {
this.applicationId = applicationId;
}
}
休息控制器方法
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody DTO1 dto){
System.out.println(dto.getApplicationId()+" (------) "+dto.getIdNumber());
return "";
}
请求类型 -- application/json
{"idNumber":"345","applicationId":"64536"}
或
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody String dto){
System.out.println(dto);
return "";
}
是的,有两种方法 -
首先 - 您需要做的就是将这些参数附加到 url,无需在正文中提供它们。
url 会像 - baseurl+/requestotp?idNumber=123&applicationId=123
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestParam(value="idNumber") String idNumber , @RequestParam(value="applicationId") String applicationId) {
return customerService.requestOTP(idNumber, applicationId);
其次-您可以按如下方式使用地图
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody Map<String,Object> body) {
return customerService.requestOTP(body.get("idNumber").toString(), body.get("applicationId").toString());
我正在将 @RestController
s 与所有请求都是 POST
请求的应用程序一起使用...正如我从 this post 中了解到的那样,您无法映射个人 post 参数到各个方法参数,而是需要将所有参数包装在一个对象中,然后将此对象用作用 @RequestBody
注释的方法参数,因此
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestParam(value="idNumber") String idNumber , @RequestParam(value="applicationId") String applicationId) {
return customerService.requestOTP(idNumber, applicationId);
不适用于正文 POST
请求 {"idNumber":"345","applicationId":"64536"}
我的问题是我有 很多 的 POST
请求,每个请求只有一个或两个参数,创建所有这些对象会很乏味只是为了在里面接收请求...那么有没有其他类似于处理获取请求参数(URL参数)的方式?
我已经更改了您的代码,请检查
DTOClass
public class DTO1 {
private String idNumber;
private String applicationId;
public String getIdNumber() {
return idNumber;
}
public void setIdNumber(String idNumber) {
this.idNumber = idNumber;
}
public String getApplicationId() {
return applicationId;
}
public void setApplicationId(String applicationId) {
this.applicationId = applicationId;
}
}
休息控制器方法
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody DTO1 dto){
System.out.println(dto.getApplicationId()+" (------) "+dto.getIdNumber());
return "";
}
请求类型 -- application/json {"idNumber":"345","applicationId":"64536"}
或
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody String dto){
System.out.println(dto);
return "";
}
是的,有两种方法 -
首先 - 您需要做的就是将这些参数附加到 url,无需在正文中提供它们。 url 会像 - baseurl+/requestotp?idNumber=123&applicationId=123
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestParam(value="idNumber") String idNumber , @RequestParam(value="applicationId") String applicationId) {
return customerService.requestOTP(idNumber, applicationId);
其次-您可以按如下方式使用地图
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody Map<String,Object> body) {
return customerService.requestOTP(body.get("idNumber").toString(), body.get("applicationId").toString());