繁体   English   中英

春天无法接收邮递员发送的邮寄参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM