[英]Spring boot REST API Missing URI template variable
我已經按照本教程使用Spring Boot構建REST API。 它教了很多東西。 但是我試圖做的事情確實使我陷入困境。 我想要得到的是:
{
"marks":{
"id":"1",
"name":"test",
"remark":"passed",
"course": {
"id": "1",
"name": "Spring Boot",
"description": "Solves many problems",
"topic": {
"id": "1",
"name": "Java",
"description": "Powerful Programming Language"
}
}
但是當我嘗試添加標記時出現錯誤:
{
"timestamp": 1515600105327,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.web.bind.MissingPathVariableException",
"message": "Missing URI template variable 'courseId' for method parameter of type String",
"path": "/topics/1/courses/1/marks"
}
我的商標模型是:
public class Marks {
@Id
private String id;
private String name;
private String remark;
@ManyToOne
private Course course;
@ManyToOne
private Topic topic;
public Marks() {
}
public Topic getTopic() {
return topic;
}
public void setTopic(Topic topic) {
this.topic = topic;
}
public Marks(String id, String name, String remark,String topicId, String courseId) {
this.id = id;
this.name = name;
this.remark = remark;
this.topic = new Topic(topicId, "","");
this.course = new Course(courseId, " ", " ", " ");
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
}
和MarksController.java
:
public class MarksController {
@RestController
public class MarksController {
@Autowired
private MarksService marksService;
@RequestMapping("/topics/{topicId}/courses/{id}/marks")
public List<Marks> getAllMarks(@PathVariable String courseId) {
return marksService.getAllMarks(courseId);
}
@RequestMapping(method=RequestMethod.POST, value="/topics/{topicId}/courses{courseId}/marks")
public void addMarks(@RequestBody Marks marks,@PathVariable String topicId ,@PathVariable String courseId) {
marks.setTopic(new Topic(topicId, "", ""));
marks.setCourse(new Course(courseId, "", "", ""));
marksService.addMarks(marks);
}
}
和MarksService.java
:
public class MarksService {
@Service
public class MarksService {
@Autowired
private MarksRepository marksRepository;
public void addMarks(Marks marks) {
marksRepository.save(marks);
}
}
和MarksRepository.java
:
public interface MarksRepository extends CrudRepository<Marks, String> {
public List<Marks> findByCourseId(String courseId);
public List<Marks> findByTopicId(String topicId);
}
任何人都可以幫助我獲取上述JSON中的結果。
POST
方法 這個:
/topics/{topicId}/courses{courseId}/marks
應該:
/topics/{topicId}/courses/{courseId}/marks
請注意courses
和{courseId}
之間的附加/
GET
方法 這個:
/topics/{topicId}/courses/{id}/marks
應該:
/topics/{topicId}/courses/{courseId}/marks
請注意,使用courseId
與courseId
中的參數名稱MarksController.getAllMarks
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.