我最近嘗試在spring中撰寫一個簡單的api。當我與郵遞員一起嘗試時,僅有的兩個作業端點是fetchAllMovie和createMovie。其他人(帶請求引數)給出回應:
{
"timestamp": "2021-11-30T14:38:34.396 00:00",
"status": 405,
"error": "Method Not Allowed",
"path": "/api/movies"
}
這是一個片段:
@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);
}
}
因此,如果我像收到錯誤一樣發送GET請求http://localhost:8080/api/movies?movieId=619fa9d9b0c30252474b9a01,但是如果我發送GET或POST請求,例如http://localhost:8080/api/movies我可以從資料庫中獲取所有資料,或者我可以在其中進行POST。(當然有適當的請求正文)
請注意:不僅GET請求不起作用。任何帶有請求引數的東西都會給我這個錯誤。
uj5u.com熱心網友回復:
@PathVariable 用于在路徑中發送引數,如下所示:http://localhost:8080/api/movies/619fa9d9b0c30252474b9a01
如果要使用指定的 URL 發送它,則需要使用注釋 @RequestParam
uj5u.com熱心網友回復:
如果您使用@PathVariable作為輸入引數,那么您應該通過以下方式呼叫端點:
http://localhost:8080/api/movies/619fa9d9b0c30252474b9a01
如果你想使用@RequestParameter然后像這樣呼叫 api:
http://localhost:8080/api/movies?movieId=619fa9d9b0c30252474b9a01
快速總結:https : //www.baeldung.com/spring-requestparam-vs-pathvariable
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/370700.html
上一篇:Vue型別不存在屬性
