[英]spring can't receive post param send by postman
我的控制器就像
@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST,
produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestParam("companyId") Integer companyId) {
return companyManageService.deleteCompany(companyId);
}
但是当我在Chrome控制台中使用
$.post( "http://ltc_dev.leapstack.cn/gw/security/auth/company/delete", { companyId: 1 })
.done(function( data ) {
alert( data.success);
alert( data.message);
});
我得到了正确的响应,所以.....我不确定这是否是邮递员的错误,或者我将控制器错配了
在您的问题中,您的控制器方法尝试将companyId作为请求参数。 在邮递员中,您将在请求正文中发送companyId。 就像我在评论中说的那样,您可以直接在url部分发送请求参数,例如: / auth / company / delete?companyId = 2 。 Spring Boot可以检测到companyId请求参数,并将其直接分配给方法的companyId变量。
如果要在请求正文中发送companyId(在注释中说过),则必须更改方法的签名,如下所示。
@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestBody Map<String, Integer> map) {
return companyManageService.deleteCompany(map.get("companyId"));
}
要么:
@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestBody CompanyDTO company) {
return companyManageService.deleteCompany(company.getCompanyId);
}
public class CompanyDTO {
private Integer companyId;
//getter setter
}
如果要使用请求正文,并且想直接在控制器方法的变量中捕获整数值作为整数,则请求正文应类似于:
{2}
控制器的方法应该是这样的:
@RequestMapping(value = "/auth/company/delete", method = RequestMethod.POST, produces = {"application/json", "application/xml"})
@ResponseBody
public ResponseMessage deleteCompany(@RequestBody Integer companyId) {
return companyManageService.deleteCompany(companyId);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.