java - 后映射不起作用,给出 405 方法不允许错误
问题描述
所以我一直在关注 Java Brains 的 Spring Boot 快速入门课程,我遇到了一个问题,它的想法是开设与某个主题相关的课程,这样你的 url 就会显示为“...... /topics/{topicId}/courses/{id}" 用于任何给定的课程。
我的大多数控制器映射都正常工作,但是我遇到了 POST 和 PUT 问题(可能是 DELETE 但无法测试它),它给了我以下错误(我正在使用邮递员发出请求):
{
"timestamp": "2021-05-16T22:10:18.049+00:00",
"status": 405,
"error": "Method Not Allowed",
"message": "",
"path": "/topics/chem/courses"
}
我已经向“http://localhost:8080/topics”发出了 POST 请求以添加化学主题,当我执行 GET 时它会显示出来,但是如果我尝试 POST 到“http://localhost: 8080/topics/chem/courses”它给出了上述错误。
我的控制器是这样构建的:
@RestController
public class CourseController {
private final CourseService courseService;
public CourseController(CourseService courseService) {
this.courseService = courseService;
}
@GetMapping("/topics/{topicId}/courses")
public List<Course> getAllCourses(@PathVariable String topicId) {
return courseService.getCourses(topicId);
}
@GetMapping("/topics/{topicId}/courses/{id}")
public Course getCourse(@PathVariable String topicId, @PathVariable String id) {
return courseService.getCourse(id);
}
@PostMapping(value = "/topics/{topicId}/courses}")
public void addCourse(@RequestBody Course course, @PathVariable String topicId) {
course.setTopic(new Topic(topicId, "", ""));
courseService.addCourse(course);
}
@PutMapping("/topics/{topicId}/courses/{id}")
public void updateCourse(@RequestBody Course course, @PathVariable String topicId) {
course.setTopic(new Topic(topicId, "", ""));
courseService.updateCourse(course);
}
@DeleteMapping("/topics/{topicId}/courses/{id}")
public void deleteCourse(@PathVariable String topicId, @PathVariable String id) {
courseService.deleteCourse(id);
}
}
据我所知,它没有理由给出这个错误,如果有人对发生的事情有任何见解,将不胜感激,Spring调试日志也在下面,以防对任何人有帮助:
解决方案
推荐阅读
- c - 我们知道的散列指针的最快、可移植方法是指针对齐到固定大小的 int 吗?
- excel - 根据绑定到表的值删除工作表行
- python - 从 django rest api 返回图像的正确方法是什么?
- gradle - 如何将 Gradle 构建分解为多个文件?
- cytoscape.js - 如何将 QTip 设置为始终在 Cytoscape.js 中显示工具提示
- html - Bootstrap 4改变列之间的间距,而不是从一侧到另一侧
- javascript - JavaScript:查询子级并修改父级
- android-studio - 从单例类获取未解决的参考
- python - 如何获取 JSON 格式字符串的特定值?
- sql-server - FROM 子句子查询从另一个表中添加一列