我可以创建多个HTTP POST方法,并使用不同的请求主体进行相同的请求映射
@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.
}
这可能吗?我们如何在春季靴子中处理这个问题。
答案 0 :(得分:0)
是的,您可以对具有不同请求主体的相同端点URI使用POST Http方法,并且可以获得不同的响应。实现此目的的一种方法是使用端点URI +标头映射请求
例如
@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
}
}
在这种情况下,BillingController中的两个类方法都映射到相同的HTTP方法(POST)和URI(/ api / bills)。当您将发布请求指向/ api / bills
后,标头操作将驱动BillingController中的类方法被调用如何打BillingController.addBill?
注意:我知道良好的REST API设计指示如果我要删除记录,则应该使用DELETE方法,但是创建此示例只是作为参考,以显示如何使用相同的URI / Method处理2个不同的端点。
答案 1 :(得分:-1)
你必须选择这个。
可以使用消耗字段。您可以使用不同的消费类型。
如果您有网址,则可以使用params字段。
@RequestMapping(value =" / path",params =" id") public String test1(@RequestBody RBody body){}
@RequestMapping(value =" / path",params =" name") public String test2(@RequestBody RBody body){}