Spring Boot应用程序不允许获取请求

时间:2019-03-09 11:15:27

标签: spring-boot

我从这里(https://medium.com/echoenergy/how-to-use-java-high-level-rest-client-with-spring-boot-to-talk-to-aws-elasticsearch-9e12571df93e)开始按照教程创建了一个springboot-弹性搜索应用程序。 我能够成功执行POST和PUT方法,但GET请求失败 我(使用PostMan)。

enter image description here

GET失败,出现以下异常

{
    "timestamp": "2019-03-09T10:45:18.496+0000",
    "status": 405,
    "error": "Method Not Allowed",
    "message": "Request method 'GET' not supported",
    "path": "/api/v1/profiles/464d06e8-ef57-49f3-ac17-bd51ba7786e2"
}

但是我正确地在控制器中添加了相应的get方法

@RestController("/api/v1/profiles")
public class ProfileController {

    private ProfileService service;

    @Autowired
    public ProfileController(ProfileService service) {

        this.service = service;
    }

    @PostMapping
    public ResponseEntity createProfile(
        @RequestBody ProfileDocument document) throws Exception {

        return 
            new ResponseEntity(service.createProfile(document), HttpStatus.CREATED);
    }

    @GetMapping("/{id}")
    public ProfileDocument findById(@PathVariable String id) throws Exception {

        return service.findById(id);
    }
}

在响应中,我看到它仅允许PUT和POST。但是我找不到服务器中的任何配置文件来显式添加除控制器外的http方法

enter image description here 有人可以帮忙吗

1 个答案:

答案 0 :(得分:3)

我可以看到您的控制器存在的问题是,在控制器类级别上没有@RequestMapping("/api/v1/profiles")。应该是

@RestController
@RequestMapping("/api/v1/profiles")

您无法在@RestController的{​​{1}}字段中指定请求路径。这意味着(按照javadocs);

  

该值可能表明建议使用逻辑组件名称,以   如果有自动检测到的组件,则将其转换为Spring bean。

希望这会有所帮助。