Java 我可以用不同的requestbody创建多个具有相同请求映射的HTTP POST方法吗
我可以用不同的requestbody创建多个具有相同请求映射的HTTP POST方法吗Java 我可以用不同的requestbody创建多个具有相同请求映射的HTTP POST方法吗,java,spring-boot,http-post,Java,Spring Boot,Http Post,我可以用不同的requestbody创建多个具有相同请求映射的HTTP POST方法吗 @RequestMapping("api/v1/") @RequestMapping(value = "test" ,method = RequestMethod.POST) public RObjet create(@RequestBody RBody rbody) { // do some process... } @RequestMapping("api/v1/") @RequestMap
@RequestMapping("api/v1/")
@RequestMapping(value = "test" ,method = RequestMethod.POST)
public RObjet create(@RequestBody RBody rbody)
{
// do some process...
}
@RequestMapping("api/v1/")
@RequestMapping(value = "test" ,method = RequestMethod.POST)
public RObjet2 create2(@RequestBody RBody2 rbody)
{
// do something.
}
这可能吗。?我们如何在spring boot中处理此问题。您必须选择此选项
- 可以使用consumes字段。您可以使用不同的消费类型
- 如果url中有参数,则可以使用参数字段 @请求映射(value=“/path”,params=“id”) 公共字符串test1(@RequestBody-RBody-body){} @请求映射(value=“/path”,params=“name”) 公共字符串test2(@RequestBody-RBody-body){}
注意:我知道良好的REST API设计规定,如果我想删除记录,我应该使用delete方法,但是创建此示例只是为了参考,以说明如何使用相同的URI/方法来处理2个不同的端点。检查此项在Spring中没有
@Consumes
注释。如果您指的是RequestMapping
的consumes
字段,那么它只适用于媒体类型,而不适用于Java类型。我指的是consumes
字段,我没有提到Java类型。这个问题没有提到任何关于不同媒体类型的内容;它涉及不同的Java类型:一个接受RBody
并返回RObjet
,另一个接受RBody2
并返回RObjet2
。强制api使用不同的媒体类型只是为了让它工作似乎是一种不恰当的攻击,而不是一种可能的解决方案。
@RestController
@RequestMapping("/api/bills")
public class BillingController {
@RequestMapping(method = RequestMethod.POST, headers = "action=add-bill")
public BillId addBill(@Valid @RequestBody BillingData data) {
//Some code
}
@RequestMapping(method = RequestMethod.POST, headers = "action=delete-bill-by-id")
@ResponseStatus(code = HttpStatus.NO_CONTENT)
public void removeBill(@Valid @RequestBody BillId identifier) {
//Some code here to remove bill
}
}