ขณะนี้ฉันมีแอปพลิเคชัน Spring Boot โดยใช้ Spring Data REST ฉันมีนิติบุคคลโดเมนPost
ซึ่งมีความสัมพันธ์กับนิติบุคคลโดเมนอื่น@OneToMany
Comment
คลาสเหล่านี้มีโครงสร้างดังนี้:
Post.java:
@Entity
public class Post {
@Id
@GeneratedValue
private long id;
private String author;
private String content;
private String title;
@OneToMany
private List<Comment> comments;
// Standard getters and setters...
}
Comment.java:
@Entity
public class Comment {
@Id
@GeneratedValue
private long id;
private String author;
private String content;
@ManyToOne
private Post post;
// Standard getters and setters...
}
ที่เก็บ Spring Data REST JPA คือการใช้งานขั้นพื้นฐานของCrudRepository
:
PostRepository.java:
public interface PostRepository extends CrudRepository<Post, Long> { }
CommentRepository.java:
public interface CommentRepository extends CrudRepository<Comment, Long> { }
จุดเริ่มต้นของแอปพลิเคชันเป็นแอปพลิเคชัน Spring Boot แบบธรรมดาทั่วไป ทุกอย่างถูกกำหนดค่าหุ้น
Application.java
@Configuration
@EnableJpaRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration
public class Application {
public static void main(final String[] args) {
SpringApplication.run(Application.class, args);
}
}
ทุกอย่างดูเหมือนจะทำงานได้อย่างถูกต้อง เมื่อฉันเรียกใช้แอปพลิเคชันทุกอย่างดูเหมือนจะทำงานได้อย่างถูกต้อง ฉันสามารถโพสต์ออบเจ็กต์โพสต์ใหม่ได้http://localhost:8080/posts
ดังนี้:
ร่างกาย:
{"author":"testAuthor", "title":"test", "content":"hello world"}
ผลที่http://localhost:8080/posts/1
:
{
"author": "testAuthor",
"content": "hello world",
"title": "test",
"_links": {
"self": {
"href": "http://localhost:8080/posts/1"
},
"comments": {
"href": "http://localhost:8080/posts/1/comments"
}
}
}
อย่างไรก็ตามเมื่อฉันดำเนินการ GET เมื่อhttp://localhost:8080/posts/1/comments
ฉันได้รับวัตถุว่าง{}
กลับมาและถ้าฉันพยายามโพสต์ความคิดเห็นไปยัง URI เดียวกันฉันจะได้รับวิธี HTTP 405 ไม่อนุญาต
เป็นวิธีที่ถูกต้องในการสร้างสิ่งที่Comment
ทรัพยากรและเชื่อมโยงกับเรื่องนี้Post
? ฉันต้องการหลีกเลี่ยงการโพสต์โดยตรงhttp://localhost:8080/comments
หากเป็นไปได้