首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rest控制器在基本路径上返回404

Rest控制器在基本路径上返回404
EN

Stack Overflow用户
提问于 2021-01-10 01:09:05
回答 2查看 305关注 0票数 0

我正在尝试用Spring Boot做一个REST API。当我使用"http://localhost:8080/foo/*",I get what I want what I use "http://localhost:8080/api/foo/*"时,我得到了404错误。我有其他几乎相同的控制器,它们工作得很好。我尝试过使用@RequestMapping,但没有任何变化。application.properties:

代码语言:javascript
运行
复制
.
.
spring.data.rest.base-path=/api

控制器:

代码语言:javascript
运行
复制
@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();
    }
}
EN

回答 2

Stack Overflow用户

发布于 2021-01-10 01:40:58

正确的属性是spring.data.rest.basePath,因此您需要在application.properties中包含以下内容

代码语言:javascript
运行
复制
spring.data.rest.basePath=/api

请参阅https://docs.spring.io/spring-data/rest/docs/current/reference/html/#getting-started.changing-base-uri

票数 0
EN

Stack Overflow用户

发布于 2021-01-11 19:01:05

application.properties中包括以下内容:

代码语言:javascript
运行
复制
server.servlet.context-path=/api

但是,这将使其在默认情况下成为应用程序中所有端点的根

另外,一旦包含了@RequestMapping注释,您是为整个控制器还是为每个方法的头部设置该注释?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65645353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档