我使用了spring-data-rest。
给定以下存储库:
@RepositoryRestResource
public interface MyRepository extends PagingAndSortingRepository<MyEntity, Long> {}save()方法上的注释@RestResource(exported = false)使框架在使用POST、PUT和PATCH方法时返回405 Method Not Allowed错误。
我的问题是:我怎么能在PUT方法上返回405错误,而这个存储库仍然允许POST和PATCH?
谢谢!
发布于 2016-02-02 21:55:22
@SWiggels感谢你的回复:)你的解决方案对我不起作用...PUT始终是允许的。
对于其他人,我发现这个方法是有效的:
@BasePathAwareController
public class MyEntityController {
@RequestMapping(value = "/myentity/{id}", method = RequestMethod.PUT)
public ResponseEntity<?> preventsPut() {
return new ResponseEntity<>(HttpStatus.METHOD_NOT_ALLOWED);
}
}发布于 2016-02-02 21:20:56
您可以在options-probe的响应中添加您允许的方法。
@RequestMapping(method = RequestMethod.OPTIONS)
ResponseEntity<Void> getProposalsOptions() {
HttpHeaders headers = new HttpHeaders();
headers.setAllow(new HashSet<>(Arrays.asList(OPTIONS, PATCH, POST)));
return new ResponseEntity<>(headers, HttpStatus.NO_CONTENT);
}这只允许Options, Patch, Post作为请求方法。对于每一个尝试过的方法,您都会得到一个HTTP-405-Error。
https://stackoverflow.com/questions/35154162
复制相似问题