标签: jax-rs

使用 CXF 作为实现来限制 JAX-RS 查询参数的值

我有一个用例,我需要限制可以作为查询参数传递的值。

\n\n
@Path("/foo")\npublic interface Foo {\n\n    @GET\n    @Path("/details/id/{id}")\n    void getFooDetails(@PathParam("id") String id, @QueryParam("sort") String sortDirection);\n}\n\npublic class FooImpl {\n    public void getFooDetails(String id, String sortDir) {\n        //Implementation\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在上面的示例中,我想限制sort可以通过 API 传递到ASC, DESC.

\n\n

是否有任何现有的 CXF 注释可以用来限制参数的值?我还没有找到任何解决方案,所以我尝试了以下解决方案。

\n\n

我的方法:

\n\n
@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})\n@Retention(RetentionPolicy.RUNTIME)\n@Inherited\npublic @interface ValueSet {\n\n    String[] allowedValues();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

修改后的界面如下所示。

\n\n
@Path("/foo")\npublic interface Foo {\n\n    @GET\n    @PathParam("/details/id/{id}")\n    void getFooDetails(@PathParam("id") String id, @QueryParam("sort") @ValueSet(allowedValues = {"ASC", "DESC"}) String sortDirection);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我编写了一个 CXF 拦截器来拦截 API 调用。我使用反射来处理参数FooImpl.getFooDetails。但我面临的问题是,拦截器查看 FooImpl.getFooDetails …

java rest spring cxf jax-rs

2
推荐指数
1
解决办法
3011
查看次数

当没有数据时应该返回哪个http代码

我编写了 Rest API,当后端系统中有数据时,它返回 200 http 代码。但是,当后端系统中没有数据时,我应该返回哪个 http 状态代码,这样它将帮助客户端代码毫无歧义地解释响应。

java rest web-services http jax-rs

2
推荐指数
1
解决办法
5507
查看次数

JAX-RS 如何读取 Kotlin 中列表的实体响应

我正在 Kotlin 中工作,想要读取实体列表,但在 {} 上遇到语法错误:“类型不匹配,必需:类型!,找到:() -> 单位”

如果我删除 {},则 GenericType 上出现语法错误:“无法访问 'init',它在 GenericType 中受保护”

我想知道从 Kotlin 的响应中读取实体列表的正确语法是什么

val path = URL_PATH
val target = getTarget(path)
val response = getRequestBuilder(target).get()

response.readEntity(GenericType<List<FoodSummary>>() {})
Run Code Online (Sandbox Code Playgroud)

rest response jax-rs kotlin

2
推荐指数
1
解决办法
2516
查看次数

如何在 JWT 标头中设置 JWT 类型

无法在令牌标头中设置 JWT 令牌类型。

这是为了制作我已经在 J​​AX-RS 中开发的安全 API。基本上,我通过 Jwts.builder() 方法生成了一个令牌,作为回报,我在 APPLICATION_JSON 中获取了令牌,然后我将此令牌粘贴到https://jwt.io/Debugger。所以我知道没有指定令牌类型的令牌标头,只有 { "alg": "HS512" } 也许这可能是我无法访问安全 API 的原因。当我尝试访问安全 API 时,出现“不支持签名声明 JWS”异常。

认证服务.java

private String issueToken(String login, String password) {

        LocalDateTime now = LocalDateTime.now().plusMinutes(10L);
        Instant instant = now.atZone(ZoneId.systemDefault()).toInstant();
        Date jwtExpiry = Date.from(instant);

        String jwtToken = Jwts.builder().setSubject(login).setIssuer("XYZ").setIssuedAt(new Date())
                .setExpiration(jwtExpiry).signWith(SignatureAlgorithm.HS512, "secretKey").compact();
        return jwtToken;
}

public class JWTTokenNeededFilter implements ContainerRequestFilter 
{
    public static final Logger logger = Logger.getLogger(JWTTokenNeededFilter.class);

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
        String token = requestContext.getHeaderString("userToken");
        if (token …
Run Code Online (Sandbox Code Playgroud)

json jax-rs jersey jwt

2
推荐指数
1
解决办法
1万
查看次数

org.glassfish.jersey.internal.util eclipse Maven Webapp 项目中缺少 Base64 类

请找到从 eclipse 获取的屏幕截图

任何帮助!我知道有很多选择,但有点困惑为什么它现在被排除在外!

java jax-rs jersey-2.0

2
推荐指数
1
解决办法
2923
查看次数

如何在 JAX-RS 过滤器中记录请求处理时间

我有 JAX-RS Web 应用程序,我想记录从获取请求到响应的时间量。在 Spring Boot 中使用 servlet 过滤器很容易。但我的应用程序中的过滤器无法正常工作:

@Provider
public class RequestLogFilter implements ContainerRequestFilter, ContainerResponseFilter {

    private long requestStartTime;

    @Override
    public void filter(ContainerRequestContext requestContext) {
        requestStartTime = System.currentTimeMillis();
    }

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) {
        long requestFinishTime = System.currentTimeMillis();
        System.out.println(requestFinishTime - requestStartTime);
    }

}
Run Code Online (Sandbox Code Playgroud)

它在第一种方法中工作正常,其中当前时间戳写入requestStartTime. 但是,似乎第二种方法有自己的requestStartTime变量副本,因为它是第二种方法,它始终等于零。所以我无法计算变量之间的差异。我可以做什么来记录请求处理时间?

jax-rs quarkus

2
推荐指数
1
解决办法
2687
查看次数

如何在 Quarkus 应用程序中检索 SecurityContext?

我有一个 Quarkus 应用程序,在其中实现了ContainerRequestFilter用于保存传入请求的标头的接口:

@PreMatching
public class SecurityFilter implements ContainerRequestFilter {
   private static final String HEADER_EMAIL = "HD-Email";

   @Override
   public void filter(ContainerRequestContext requestContext) throws IOException {
       String email = requestContext.getHeaders().getFirst(HEADER_EMAIL);

       if (email == null) {
           throw new AuthenticationFailedException("Email header is required");
       }

       requestContext.setSecurityContext(new SecurityContext() {
           @Override
           public Principal getUserPrincipal() {
               return () -> email;
           }

           @Override
           public boolean isUserInRole(String role) {
               return false;
           }

           @Override
           public boolean isSecure() {
               return false;
           }

           @Override
           public String getAuthenticationScheme() {
               return null; …
Run Code Online (Sandbox Code Playgroud)

java security jax-rs quarkus

2
推荐指数
1
解决办法
5988
查看次数

多个项目可以具有相同的上下文根吗?

我将使用weblogic和JAX-RS构建许多Web服务.为了简单起见,我将把每个服务放在自己的项目中.但我似乎遇到的问题是为每个项目设置context-root.

可以在save weblogic服务器上部署的多个项目是否具有相同的上下文根?

java weblogic jax-rs

1
推荐指数
1
解决办法
2288
查看次数

'+'和'?' 连续使用正则表达式

Java EE REST指定JAX-RS描述了路径变量到正则表达式的转换,例如/customer/{id}.

从JAX-RS 1.1规范,第19页:

将每个URI模板变量替换为包含指定正则表达式的捕获组,如果未指定正则表达式,则替换为"([/] +?)".

java.util.regex.Pattern的Java API doc说:

X?     X, once or not at all
X+     X, one or more times
Run Code Online (Sandbox Code Playgroud)

那么,意味着+?什么?

java regex jax-rs

1
推荐指数
1
解决办法
155
查看次数

Jersey - 在POST上使用XML和HTML

我想为我的RESTful Web服务提供灵活的身份验证方法 - 通过HTML表单或XML.我意识到我可以从HTML表单进行AJAX调用,但我认为一个更简单的机制会很有用(特别是在开发过程中).

如果我用@Consumes("application/xml","application/x-www-form-urlencoded")注释我的SessionResource.createSession()方法,它将接受这两种类型的内容.困难的部分是区分XML流和HTML.

任何指导或想法将不胜感激.

html xml rest jax-rs jersey

1
推荐指数
1
解决办法
1634
查看次数

标签 统计

jax-rs ×10

java ×6

rest ×4

jersey ×2

quarkus ×2

cxf ×1

html ×1

http ×1

jersey-2.0 ×1

json ×1

jwt ×1

kotlin ×1

regex ×1

response ×1

security ×1

spring ×1

web-services ×1

weblogic ×1

xml ×1