私は基本的な春のブートデータの残りのAPIは、多くのコメントを持つことができます。私の問題は、サブリソースURIにhttp://localhost:8090/posts/1/commentsなどのコメントを直接投稿する方法を見つけることができないということです。春のブート時にサブリソースに直接ポスト投稿データ休憩
私はこれを行うことができた唯一の方法は、最初にhttp://localhost:8090/commentsにコメントリソースを作成してから、http://localhost:8090/posts/1/commentsにコメントのURIを投稿することでした。
コメントは決して自分自身では存在できず、記事にリンクすることができないように、本当に悪い考えです。
私はこれを1つのアクションとしてどのように行うことができるのか分かっていません。そうでなければ、何か理由でコメントが投稿されるが決して投稿されない孤立したコメントを手動で処理しなければなりません。
私のコードは以下の通りです。 ご協力いただければ幸いです。
@Entity
public class Comment extends ResourceSupport {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonIgnore
private Long id;
private String comment;
@ManyToOne
private Post post;
@ManyToOne
private User sender;
protected Comment() {};
public void setId(Long id) {
this.id = id;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public User getSender() {
return sender;
}
public void setSender(User sender) {
this.sender = sender;
}
public Post getPost() {
return post;
}
public void setPost(Post post) {
this.post = post;
}
@Entity
public class Post extends ResourceSupport {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private @JsonIgnore Long id;
private String text;
@OneToMany
private List<Comment> comments;
protected Post() {};
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public List<Comment> getComments() {
return comments;
}
public void setComments(List<Comment> comments) {
this.comments = comments;
}
}
@RepositoryRestResource
public interface PostRepository extends PagingAndSortingRepository<Post, Long> {}
@RepositoryRestResource
public interface CommentRepository extends PagingAndSortingRepository<Comment, Long> {}
@SpringBootApplication
@EnableJpaRepositories("rest.api.repository")
@EnableWebMvc
@EnableTransactionManagement
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
投稿にコメントを投稿しようとするために使用してJSONのイムは、それは私が上すなわち@OneToMany(mappedBy =「POST」)によってマッピング使用するために必要なことが判明し
{
"comment": "some text",
"sender": "http://localhost:8090/users/1"
}
jsonが間違っているようです。投稿が既に存在する場合、なぜ投稿IDで投稿しないのですか?また、送信元はどこから来て、なぜあなたのAPIへのURLですか?最後に、あなたのIDEまたはブラウザでエラーが発生していますか? – ChiefTwoPencils
私は、この例ではIDが送信者を逃してしまったことに気付きました(私はコードを削除して誤って削除しました)。 – gezinspace
私はまだあなたが送信者をそのように持っている理由はまだ分かりません。私はあなたのjsonに 'post:'オブジェクトと 'sender:'オブジェクトを追加することが始まると思います。しかし、投稿IDが必要になります。あるいは、ユーザーのIDを送信し、あなたのサービスからそれらを取得し、そのように追加することができます。私はAPIを介してそれらを投稿しません。まず、ブラウザコンソールを開いた状態で投稿を作成し、エラーが発生した場合はお知らせください。 – ChiefTwoPencils