我发送了一个发布请求,但我不断收到空值

问题描述 投票:0回答:1

我发送此数据 我发送这个数据 但它总是为空 但它总是为空

我想评论每部电影

不知道问题出在哪里

评论控制器

这是你通过后期映射获取并交给服务的部分

我无法获取movie_Id,所以我得到了变量id的movie_Id

@PostMapping("/search/{title}/comments")
public ResponseEntity<CommentDto> addComment(@PathVariable String title,@RequestBody CommentDto dto) {
            

log.info("received Dto{}",dto.toString());

    int id= moviesSearchService.findByTitletoId(title);
    CommentDto commentDto=commentService.create(id,dto);

    return ResponseEntity.status(HttpStatus.OK).body(commentDto);
}

当我查看日志时,它说请求正文本身为空
像这样

2024-05-05T00:14:57.173+09:00 INFO 1880 --- [softwareEngBE] [nio-8080-exec-1] c.e.s.controller.CommentApiController : 收到 DtoCommentDto(id=0, movieId=0, rating=0 ,评论=空)

评论服务

是存储到Repository的一个处理过程,我觉得没有问题。

public CommentDto create(int id, CommentDto dto) {
Movies movies = moviesRepository.findById(id)
        .orElseThrow(()-> new IllegalArgumentException("No exist movie"));



Comment comment=Comment.createComment(dto,movies);

Comment created=commentRepository.save(comment);
return CommentDto.createCommentDto(created);
}

评论D至

很多题都找不到,但我找不到,我把它很好地放在camelCase中

public class CommentDto {
    @JsonProperty("id")
    private long id;

    @JsonProperty("movie_Id")
    private int movieId;

    @JsonProperty("rating")
    private int rating;

    @JsonProperty("comment")
    private String comment;


    public static CommentDto createCommentDto(Comment comment) {
        return new CommentDto(
                comment.getId(),
                comment.getMovies().getMovie_Id(),
                comment.getRating(),
                comment.getComment()
        );
    }
}

评论、电影实体

这是我第一次使用fk编写代码,我认为这里也可能存在问题

public class Comment {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @ManyToOne
    @JoinColumn(name="movie_Id")
    private Movies movies;

    @Column
    private int rating;
    @Column
    private String comment;

    public static Comment createComment(CommentDto dto,Movies movies){
        return new Comment(
                dto.getId(),
                movies,
                dto.getRating(),
                dto.getComment()
        );
    }

}
public class Movies {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int movie_Id;
    @Column
    private String title;
    @Column
    private String genres;

    public static Movies createMovies(MoviesDto dto){
        return new Movies(dto.getMovie_Id(), dto.getTitle(), dto.getGenres());
    }
}

评论库

@Repository
public interface CommentRepository extends JpaRepository<Comment,Long> {
    
    @Query(value = "Select * " +
            "from comment " +
            "where movie_Id = :id",
            nativeQuery = true)
    List<Comment> findByMovieId(int id);
}

我想创建我发送给你的值,而不是 null

json spring spring-data parameter-passing
1个回答
0
投票

您在

null
对象中接收
CommentDto
值,因为您没有在控制器中使用正确的注释
@RequestBody
。您正在使用 swagger 而不是 spring 的注释。您必须将
CommentApiController
中的导入行从
import io.swagger.v3.oas.annotations.parameters.RequestBody
更改为 Spring
import org.springframework.web.bind.annotation.RequestBody
中的导入行。

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.