首个Spring应用问题:无法访问Controller接口/api/anagrafica
问题:Spring Boot接口/api/anagrafica返回404错误
我正在学习后端开发,跟随网上教程搭建了一个Spring应用,但在Postman中调用GET请求/api/anagrafica时出现如下404错误:
{ "timestamp": "2023-12-21T21:59:07.341+00:00", "status": 404, "error": "Not Found", "path": "/api/anagrafica" }
以下依次是Model、Service、Controller、Repository的代码,以及调用GET请求时的控制台日志:
相关代码
MODEL
@Table(name = "anagrafica") @Entity public class Anagrafica { @Id @GeneratedValue(strategy= GenerationType.IDENTITY) private long Id; private String nome; public long getId() { return Id; } public void setId(long id) { Id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public Anagrafica(long id, String nome) { Id = id; this.nome = nome; } }
Service
@Service public class AnagraficaService { @Autowired private IAnagraficaRepository anagRepository; public Iterable<Anagrafica> getAll(){ return anagRepository.findAll(); } public Optional<Anagrafica> getById(Long id){ return anagRepository.findById(id); } public Anagrafica create(Anagrafica anag){ return anagRepository.save(anag); } public Optional<Anagrafica> update(Long id,Anagrafica anag){ Optional<Anagrafica> anagr= anagRepository.findById(id); if(anagr.isEmpty()){ return Optional.empty(); } anagr.get().setNome(anag.getNome()); anagRepository.save(anagr.get()); return anagr; } public String delete (Long id){ Optional<Anagrafica> anagr= anagRepository.findById(id); if(anagr.isEmpty()){ return "Non si può cancellare"; } anagRepository.delete(anagr.get()); return "Cancellato"; } }
Controller
@RestController public class AnagraficaController { @Autowired private AnagraficaService anagService; public AnagraficaController(){ } @GetMapping("/api/anagrafica") public Iterable<Anagrafica> getAll(){ System.out.println("Calling getAll() method in AnagraficaController"); return anagService.getAll(); } @GetMapping("/api/anagrafica/{id}") public Anagrafica getById(@PathVariable Long id){ Optional<Anagrafica> anagr= anagService.getById(id); if(anagr.isEmpty()){ throw new ResponseStatusException(HttpStatus.NOT_FOUND,"item not found"); } return anagr.get(); } @PostMapping("/api/anagrafica") public Anagrafica create(@RequestBody Anagrafica anag){ return anagService.create(anag); } @PutMapping("/api/anagrafica/{id}") public Optional<Anagrafica> update(Long id,@RequestBody Anagrafica anag){ return anagService.update(id,anag); } @DeleteMapping("/api/anagrafica/{id}") public String delete (Long id){ return anagService.delete(id); } }
Repository
@Repository public interface IAnagraficaRepository extends CrudRepository<Anagrafica, Long> { }
调用GET请求时的控制台日志
2023-12-21T23:04:21.583+01:00 DEBUG 18012 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet : GET "/api/anagrafica", parameters={} 2023-12-21T23:04:21.584+01:00 DEBUG 18012 --- [nio-8080-exec-5] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped to ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]] 2023-12-21T23:04:21.585+01:00 DEBUG 18012 --- [nio-8080-exec-5] o.s.w.s.r.ResourceHttpRequestHandler : Resource not found 2023-12-21T23:04:21.585+01:00 DEBUG 18012 --- [nio-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.servlet.resource.NoResourceFoundException: No static resource api/anagrafica.] 2023-12-21T23:04:21.585+01:00 DEBUG 18012 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet : Completed 404 NOT_FOUND 2023-12-21T23:04:21.585+01:00 DEBUG 18012 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet : "ERROR" dispatch for GET "/error", parameters={} 2023-12-21T23:04:21.586+01:00 DEBUG 18012 --- [nio-8080-exec-5] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#error(HttpServletRequest) 2023-12-21T23:04:21.586+01:00 DEBUG 18012 --- [nio-8080-exec-5] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Using 'application/json', given [*/*] and supported [application/json, application/*+json] 2023-12-21T23:04:21.586+01:00 DEBUG 18012 --- [nio-8080-exec-5] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Writing [{timestamp=Thu Dec 21 23:04:21 CET 2023, status=404, error=Not Found, path=/api/anagrafica}] 2023-12-21T23:04:21.587+01:00 DEBUG 18012 --- [nio-8080-exec-5] o.s.web.servlet.DispatcherServlet : Exiting from "ERROR" dispatch, status 404
我期望/api/anagrafica接口能够正常工作。
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

