我从这里(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)。
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方法
答案 0 :(得分:3)
我可以看到您的控制器存在的问题是,在控制器类级别上没有@RequestMapping("/api/v1/profiles")
。应该是
@RestController
@RequestMapping("/api/v1/profiles")
您无法在@RestController
的{{1}}字段中指定请求路径。这意味着(按照javadocs);
该值可能表明建议使用逻辑组件名称,以 如果有自动检测到的组件,则将其转换为Spring bean。
希望这会有所帮助。