标签: javax.ws.rs

未指定@DefaultValue时@QueryParam的默认值是什么?

例如,具有以下Java休息定义:

@GET
@Path("/something")
public String somthing(
    @QueryParam("valString") String valString,
    @QueryParam("valInt") int valInt,
    @QueryParam("valBool") boolean valBool
) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

并调用:

curl -X GET 127.0.0.1/something
Run Code Online (Sandbox Code Playgroud)

如果未在调用中指定,参数值将是什么?(valString =?,valInt =?,valBool =?)

java rest javax.ws.rs queryparam

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

Spring 请求映射与正则表达式如 javax.ws.rs

我正在尝试将此 Google App Engine Maven 服务器存储库重写为 Spring。

我有 URL 映射问题。Maven 回购服务器标准如下所示:

  1. 以斜线结尾的 URL 指向一个文件夹,例如:

    http://127.0.0.1/testDir/
    http://127.0.0.1/testDir/testDir2/
    
    Run Code Online (Sandbox Code Playgroud)
  2. 所有其他(末尾没有斜线)指向文件,例如:

    http://127.0.0.1/testFile.jar
    http://127.0.0.1/testFile.jar.sha1
    http://127.0.0.1/testDir/testFile2.pom
    http://127.0.0.1/testDir/testFile2.pom.md5
    
    Run Code Online (Sandbox Code Playgroud)

目录文件的原始应用程序映射。

使用了@javax.ws.rs.Path与 Spring 不同的支持正则表达式的注释。

我尝试了一堆组合,例如这样的:

http://127.0.0.1/testDir/
http://127.0.0.1/testDir/testDir2/
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何在 Spring 应用程序中以正确的方式做到这一点。

我想避免编写自定义 servlet 调度程序。

java regex mapping spring javax.ws.rs

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

将@Context参数传递给类中的方法

我有一个现有的类,我正试图将一些头参数提供给SSO用户进入我们的系统.课程如下.

import java.util.Map;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;

import org.springframework.stereotype.Component;

@Component
@Path("/http")
public class HttpResource {
    @GET
    @Path("/getHeaders")
    @Produces(MediaType.APPLICATION_JSON)
    public Map<String, String> getAllHeaders(@Context HttpHeaders headers) {
        Map<String, String> headerList = new HashMap<String, String>();
        for (String key : headers.getRequestHeaders().keySet()) {
            String value = headers.getRequestHeader(key).get(0);
            System.out.println(key + " : " + value);
            headerList.put(key, value);
        }
        return headerList;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想弄清楚的是我如何调用getAllHeaders()这个@Context论点?我已经找到了很多我所拥有的课程的例子,但没有说明如何称呼它.

我也尝试将注释放在类中而不是作为参数.

@Context
HttpHeaders httpHeaders;
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问httpHeaders.getAllHeaders()它时返回null.我假设因为它实际上并没有创建,因为javax文件说它永远不会返回null.

我试图在我的SSOAuthorizationFilter.java中调用它,但也尝试通过控制器访问它.

java spring javax.ws.rs

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

如何在 jax-rs 端点的路径参数中允许斜线

我有一个端点:

@Path("/products")

    @Produces({ MediaType.APPLICATION_JSON })
    public interface Products {

        @PUT
        @Path("/{productId}")
        ....
    }
Run Code Online (Sandbox Code Playgroud)

我为这个服务实现了一个 jax-rs 客户端,并将它导入到我从中调用它的另一个服务中。

所以我从我的第二个服务中调用客户端如下

public String updateProduct(String productId){
..
  return client.target(this.getBaseUrl()).path("products/").path(productId).request(MediaType.APPLICATION_JSON_TYPE).put(Entity.json(""), String.class);
}
Run Code Online (Sandbox Code Playgroud)

如果我有一个带有斜杠的产品,上面写着“控制/注册应用程序”,该服务似乎不太好。我确实在调用服务之前对 productId 进行了编码,然后在收到后对其进行解码。但这似乎不起作用,我找不到 404。有任何想法吗?提前致谢

java web-services jax-rs path-parameter javax.ws.rs

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

将InboundJaxrsResponse转换为json字符串

我正在尝试将jax-rs响应序列化为json字符串.

来自服务器的响应是json,我从泽西客户端获得它:

Response resp = target.request().method("PUT", Entity.json(payloadBean))
Run Code Online (Sandbox Code Playgroud)

其中payloadBean是我的json请求.一切正常但我无法转换json字符串中的resp以便记录它.

如果我尝试:

String s = EntityUtils.toString((HttpEntity) resp.getEntity());
Run Code Online (Sandbox Code Playgroud)

我明白了:

org.glassfish.jersey.client.internal.HttpUrlConnector cannot be cast to org.apache.http.HttpEntity
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果我没有强制转换为HttpEntity,编译器说:

toString (org.apache.http.HttpEntity) in EntityUtils cannot be applied to (java.lang.Object).
Run Code Online (Sandbox Code Playgroud)

我的相关进口是:

import org.apache.http.HttpEntity;
import org.apache.http.util.EntityUtils;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

jax-rs jersey-2.0 javax.ws.rs

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