【发布时间】:2018-06-19 20:47:21
【问题描述】:
我已经关注this tutorial 使用 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 中的结果。
【问题讨论】:
标签: java rest api maven spring-boot