【问题标题】:Multiple functions for the same path in jax.ws.rs?jax.ws.rs 中同一路径的多个函数?
【发布时间】:2022-02-02 11:48:59
【问题描述】:

假设我想在我的应用程序上实现只读行为(不允许发布/放置)。我可以通过禁用这些类型/设置捕获任何端点上的请求的@POST/@PUT 来做到这一点吗? (而不是在我的应用程序中的每个帖子/帖子上都放置一个布尔标志

【问题讨论】:

  • 代码中的示例将帮助我们理解您在说什么。

标签: java jax-rs


【解决方案1】:

您可以添加一个过滤器,禁止所有您不想支持的方法:

import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.ext.Provider;

@Provider 
public class AuthorizationRequestFilter implements ContainerRequestFilter {
    private final List<String> disallowed=Arrays.asList("POST","PUT","DELETE","PATCH");

   @Override
   public void filter(ContainerRequestContext requestContext)
                throws IOException {
        if (disallowed.contains(requestContext.getMethod())){
            requestContext.abortWith(Response
                    .status(Response.Status.FORBIDDEN)
                    .entity("User cannot modify the resource.")
                    .build());
        }
    }
}

【讨论】:

    猜你喜欢
    • 2021-12-15
    • 2019-10-14
    • 2017-03-25
    • 2020-02-03
    • 2012-10-29
    • 2013-07-01
    • 2021-07-09
    • 2015-07-02
    • 1970-01-01
    相关资源
    最近更新 更多