我想测试我的REST服务,以便使用Postman保存具有特定类别(manyToOne)的产品:
这是我的要求的主体:
{
"categoryId": 36,
"product": {
"code": "code1",
"name": "product1",
"price": 20
}
}
这就是我的REST服务方法的签名如下:
@RequestMapping(value = "/addProduct", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ProductBean> add(@RequestParam(value ="categoryId") Long id, @RequestParam(value = "product") ProductBean productBean)
我在Postman的最后用/addProduct
添加了我的网址,然后选择了POST
。在正文标签中,我选择raw
并选择JSON (application json)
。
当我发送请求时,我得到了HTTP 400.
如何在Postman中无错误地测试?
修改
我想使用邮递员测试它,以确保我的REST在添加前端部分之前正在工作。这就是我从前面发送数据的方式
add: function (product, id, successCallBack, failureCallBack) {
$http({
method: 'POST',
url: "/addProduct",
params: {
product: product,
categoryId: id
},
headers: {'Content-Type': 'application/json'}
}).then(successCallBack, failureCallBack);
}
答案 0 :(得分:5)
您的方法签名不正确。 @RequestParam是uri中的参数,而不是请求的主体。它应该是:
public ResponseEntity<ProductBean> add(MyBean myBean)
其中MyBean
属性:id和product或
public ResponseEntity<ProductBean> add(@ModelAttribute(value ="categoryId") Long id, @ModelAttribute(value = "product") ProductBean productBean)
有关映射请求的更多信息,请参阅Spring documentation
如果你想坚持你的原始映射,那么一切都应该在查询字符串中传递,而在正文中没有任何内容。 查询字符串看起来像这样:
/addProduction?categoryId=36&product={"code":"code1",...}