osa*_*oub 5 spring spring-mvc spring-restcontroller
我在@RestController一个应用程序中使用s,其中所有请求都是POST请求...正如我从这篇文章中了解到的那样,你不能将各个post参数映射到单个方法参数,而是需要将所有参数包装在一个对象中然后使用它object作为用@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);
Run Code Online (Sandbox Code Playgroud)
不适POST用于身体的要求{"idNumber":"345","applicationId":"64536"}
我的问题是,我有很多的POST要求,每个只有一个或两个参数,这将是乏味的创建所有这些对象只是为了得到里面的请求......所以有相似的地方获得请求的方式任何其他方式参数(URL参数)处理?
小智 17
是的有两种方式 -
首先 - 你正在做的只是你需要做的是用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);
Run Code Online (Sandbox Code Playgroud)
第二 - 你可以使用如下地图
@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());
Run Code Online (Sandbox Code Playgroud)
我已经更改了您的代码,请检查
DTO类
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;
}
Run Code Online (Sandbox Code Playgroud)
}
休息控制器方法
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody DTO1 dto){
System.out.println(dto.getApplicationId()+" (------) "+dto.getIdNumber());
return "";
}
Run Code Online (Sandbox Code Playgroud)
请求类型——application/json {"idNumber":"345","applicationId":"64536"}
或者
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody String dto){
System.out.println(dto);
return "";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21049 次 |
| 最近记录: |