[英]Rest Controller returns 404 on base path
我正在嘗試使用 Spring 啟動 REST API。 當我執行“http://localhost:8080/foo/*”時,我得到了我想要的,但是當我使用“http://localhost:8080/api/foo/*”時,我得到 404 錯誤。 我有其他幾乎相同的控制器,它們工作得很好。 我嘗試過使用@RequestMapping,但沒有任何改變。 應用程序屬性:
.
.
spring.data.rest.base-path=/api
Controller:
@RestController
public class FooController {
@Autowired
private FooRepository fooRepository;
@GetMapping("/foo")
public List<Foo> retreiveAllFoos(){
return fooRepository.findAll();
}
@GetMapping("/foo/{id}")
public Foo retrieveFoo(@PathVariable int id) {
Optional<Foo> foo = fooRepository.findById(id);
return foo.get();
}
@DeleteMapping("/foo/{id}")
public void deleteFoo(@PathVariable int id) {
fooRepository.deleteById(id);
}
@PostMapping("/foo")
public ResponseEntity<Object> createFoo(@RequestBody Foo foo){
Foo savedFoo = fooRepository.save(foo);
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
.buildAndExpand(savedFoo.getId()).toUri();
return ResponseEntity.created(location).build();
}
@PutMapping("/foo/{id}")
public ResponseEntity<Object> updateFoo(@RequestBody Foo foo, @PathVariable int id){
Optional<Foo> fooOptional = fooRepository.findById(id);
if(!fooOptional.isPresent()) {
return ResponseEntity.notFound().build();
}
foo.setId(id);
fooRepository.save(foo);
return ResponseEntity.noContent().build();
}
}
正確的屬性是spring.data.rest.basePath
因此您需要在application.properties
中包含以下內容:
spring.data.rest.basePath=/api
在application.properties
中包括以下內容:
server.servlet.context-path=/api
但是,默認情況下,這將使其成為應用程序中所有端點的根
此外,一旦包含@RequestMapping
注釋,您是為每個方法的整個 controller 還是 header 設置這個?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.