【发布时间】:2022-01-07 07:12:17
【问题描述】:
我最近尝试在 spring 中编写一个简单的 api。
当我用邮递员尝试时,仅有的两个工作端点是fetchAllMovie 和createMovie。其他人(带请求参数)给出响应:
{
"timestamp": "2021-11-30T14:38:34.396+00:00",
"status": 405,
"error": "Method Not Allowed",
"path": "/api/movies"
}
这是一个sn-p:
@RestController
@RequestMapping("/api/movies")
public class MovieController {
@Autowired
private MovieService movieService;
@Autowired
private MovieRepository movieRepository;
@Autowired
private MovieMapper movieMapper;
@GetMapping
public List<Movie> fetchAllMovie() {
return movieService.getAllMovie();
}
@PostMapping
public MovieDto createMovie(@RequestBody MovieCreationDto movieCreationDto) {
Movie movie = movieMapper.creationDtoToModel(movieCreationDto);
return movieMapper.modelToDto(movieRepository.save(movie));
}
@GetMapping("/{movieId}")
public MovieDto fetchMovieById(@PathVariable("movieId") String movieId) throws MovieNotFoundException {
Movie movie = movieRepository.findById(movieId).orElseThrow(MovieNotFoundException::new);
return movieMapper.modelToDto(movie);
}
}
因此,如果我发送像 http://localhost:8080/api/movies?movieId=619fa9d9b0c30252474b9a01 这样的 GET 请求,我会收到错误消息,但是如果我发送像这样的 GET 或 POST 请求http://localhost:8080/api/movies 我可以从数据库中获取所有数据,或者我可以在其中 POST。 (当然有正确的请求正文)
注意:不仅 GET 请求不起作用。任何带有请求参数的东西都会给我这个错误。
【问题讨论】:
标签: spring spring-boot api spring-mvc backend