首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止spring-data-rest中的HTTP方法

阻止spring-data-rest中的HTTP方法
EN

Stack Overflow用户
提问于 2016-02-02 20:56:31
回答 2查看 856关注 0票数 4

我使用了spring-data-rest。

给定以下存储库:

代码语言:javascript
复制
@RepositoryRestResource
public interface MyRepository extends PagingAndSortingRepository<MyEntity, Long> {}

save()方法上的注释@RestResource(exported = false)使框架在使用POST、PUT和PATCH方法时返回405 Method Not Allowed错误。

我的问题是:我怎么能在PUT方法上返回405错误,而这个存储库仍然允许POST和PATCH?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-02-02 21:55:22

@SWiggels感谢你的回复:)你的解决方案对我不起作用...PUT始终是允许的。

对于其他人,我发现这个方法是有效的:

代码语言:javascript
复制
@BasePathAwareController
public class MyEntityController {

    @RequestMapping(value = "/myentity/{id}", method = RequestMethod.PUT)
    public ResponseEntity<?> preventsPut() {
        return new ResponseEntity<>(HttpStatus.METHOD_NOT_ALLOWED);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2016-02-02 21:20:56

您可以在options-probe的响应中添加您允许的方法。

代码语言:javascript
复制
@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。

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

https://stackoverflow.com/questions/35154162

复制
相关文章

相似问题

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