You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首个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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 12:32:04