java - 如何将具有相同前缀uri的映射重载到Spring中的不同方法?
问题描述
我正在尝试将具有相同前缀的两个不同 URI 映射到两个不同的处理程序
发布“资源”-> resourcesBl.create
发布“资源/{path_variable}”-> resourcesBl.createOther
注意 - 每个请求的主体都不同
并且 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/”。斜线到第二个之后的任何内容。
注意:不要忘记使用路径变量。
推荐阅读
- sql - 参数数量或类型错误
- database - 我无法在 laravel 5.6 中将表迁移到数据库中
- angular - Angular 6 ERROR TypeError:无效的调用对象
- json - 如何继续在颤振中接收 JSON 数组并解析它?
- android - 如何从数据库中获取所有结果并使用正确的文本视图进行设置
- regex - DXF→仅元素
- apache-kafka - 卡夫卡打开的文件太多,很多小日志,ulimit很高,大约5k段
- javascript - 在 JavaScript 中验证后提交表单的确认消息
- java -
溪流 - 不明白这个返回类型 - android - 无法在android的自定义gridview中显示从MYSQL数据库中获取数据