Ne *_* AS 1 java json spring-boot postman
我想测试我的REST服务,以便使用Postman保存具有特定类别(manyToOne)的产品:
这是我的要求的正文:
{
"categoryId": 36,
"product": {
"code": "code1",
"name": "product1",
"price": 20
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我的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)
Run Code Online (Sandbox Code Playgroud)
我在URL /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);
}
Run Code Online (Sandbox Code Playgroud)
您的方法签名不正确。@RequestParam是uri中的参数,而不是请求的正文。它应该是:
public ResponseEntity<ProductBean> add(MyBean myBean)
Run Code Online (Sandbox Code Playgroud)
必须在哪里 MyBean设置属性:ID和产品或
public ResponseEntity<ProductBean> add(@ModelAttribute(value ="categoryId") Long id, @ModelAttribute(value = "product") ProductBean productBean)
Run Code Online (Sandbox Code Playgroud)
有关映射请求的更多信息,请参见Spring文档。
如果要坚持原始映射,则所有内容都应在查询字符串中传递,而正文中则不应传递任何内容。查询字符串将如下所示:
/addProduction?categoryId=36&product={"code":"code1",...}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12341 次 |
| 最近记录: |