如何将具有相同前缀 uri 的映射重载到 Spring 中的不同方法?
How to overload mapping with same prefix uri to different methods in Spring?
我正在尝试将具有相同前缀的两个不同 URI 映射到两个不同的处理程序
POST "resource" -> resourcesBl.create
POST "resource/{path_variable}" -> resourcesBl.create其他
注意 - 每个请求正文都不同
并且 Spring 不会自动执行
@RestController
@RequestMapping("resource")
public class MyController {
@Autowired
private ResourcesBl resourcesBl;
@PostMapping
public Resource create(@RequestBody Resource resource) {
return resourcesBl.create(resource);
}
@PostMapping("/{resourceName}"}
public OtherResource create(@PathVariable String resourceName, @RequestBody OtherResource otherResource, ) {
return resourcesBl.createOther(otherResource);
}
}
我已经用 Postman 尝试过这个解决方案,它工作得很好并且采用路径变量,两个映射都可以用不同的主体调用。
@RestController
@RequestMapping("/resource")
public class MyController {
@Autowired
private ResourcesBl resourcesBl;
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public Resource create(@RequestBody Resource resource) {
return resourcesBl.create(resource);
}
@RequestMapping(value = "/{resourceName}", method = RequestMethod.POST)
@ResponseBody
public OtherResource create(@PathVariable String resourceName,
@RequestBody OtherResource otherResource) {
return resourcesBl.createOther(resourceName, otherResource);
}
}
所有带有空路径参数的请求都将映射到第一个方法,因此:“/resource”和“/resource/”。斜线到第二个之后的任何内容。
注意:不要忘记使用路径变量。
我正在尝试将具有相同前缀的两个不同 URI 映射到两个不同的处理程序
POST "resource" -> resourcesBl.create
POST "resource/{path_variable}" -> resourcesBl.create其他
注意 - 每个请求正文都不同
并且 Spring 不会自动执行
@RestController
@RequestMapping("resource")
public class MyController {
@Autowired
private ResourcesBl resourcesBl;
@PostMapping
public Resource create(@RequestBody Resource resource) {
return resourcesBl.create(resource);
}
@PostMapping("/{resourceName}"}
public OtherResource create(@PathVariable String resourceName, @RequestBody OtherResource otherResource, ) {
return resourcesBl.createOther(otherResource);
}
}
我已经用 Postman 尝试过这个解决方案,它工作得很好并且采用路径变量,两个映射都可以用不同的主体调用。
@RestController
@RequestMapping("/resource")
public class MyController {
@Autowired
private ResourcesBl resourcesBl;
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public Resource create(@RequestBody Resource resource) {
return resourcesBl.create(resource);
}
@RequestMapping(value = "/{resourceName}", method = RequestMethod.POST)
@ResponseBody
public OtherResource create(@PathVariable String resourceName,
@RequestBody OtherResource otherResource) {
return resourcesBl.createOther(resourceName, otherResource);
}
}
所有带有空路径参数的请求都将映射到第一个方法,因此:“/resource”和“/resource/”。斜线到第二个之后的任何内容。
注意:不要忘记使用路径变量。