REST资源版本控制的最佳实践是将版本信息放入HTTP请求的Accept/Content-Typeheader中,同时保持URI不变。以下是用于检索系统信息的RESTAPI请求/响应示例:==>GET/api/system-infoHTTP/1.1Accept:application/vnd.COMPANY.systeminfo-v1+json注意版本以MIME类型指定。这是版本2的另一个请求/响应:==>GET/api/system-infoHTTP/1.1Accept:application/vnd.COMPANY.systeminfo-v2+json有关更多解释和示例,请参阅ht
是否有任何javax.ws.rs.core.UriInfo的实现,我可以使用它来快速创建一个实例进行测试。这个界面很长,我只是想测试一下。我不想在这个接口(interface)的整个实现上浪费时间。更新:我想为与此类似的函数编写单元测试:@GET@Path("/my_path")@Produces(MediaType.TEXT_XML)publicStringwebserviceRequest(@ContextUriInfouriInfo); 最佳答案 您只需使用@Context注释将其作为字段或方法参数注入(inject)即可。@
我在JAX-RSAPIjavax.ws.rs.core.Cookie和javax.ws.rs.core.NewCookie中找到了两个类。一个比另一个有什么优势?我想知道推荐使用哪一个以及何时使用?提前致谢:) 最佳答案 不是推荐,而是合适。一种用于请求,一种用于响应。您可以看到两个不同的javadoc。CookieRepresentsthevalueofaHTTPcookie,transferredinarequest.NewCookieUsedtocreateanewHTTPcookie,transferredinarespon
我想从具有外部枚举定义的JAX-RS端点生成swagger,但是生成的swagger直接将枚举包含到模型的定义中。这意味着没有生成枚举文档,而且在客户端复制了相同的枚举。我使用swagger-jaxrs依赖项来扫描我的端点并生成swaggerjson文件。这个GitHubrepository可用于重现问题。我还创建了一个GitHubissue在swagger-core存储库上。JAX-RS端点@Api("hello")@Path("/helloSwagger")publicclassHelloSwagger{@ApiOperation(value="Getalluniquecustom
在oneofthefewquestions(withanswers)我在SO上发现关于JAX-RS和缓存,生成ETag(用于缓存)的答案是通过在Response对象上设置一些值。如下所示:@GET@Path("/person/{id}")publicResponsegetPerson(@PathParam("id")Stringname,@ContextRequestrequest){Personperson=_dao.getPerson(name);if(person==null){returnResponse.noContent().build();}EntityTageTag=n
我已经创建了一些JAX-RS2.0资源(使用在Servlet容器中运行的Jeresey2.4)和一个过滤器来处理可以通过@NameBinding注释有选择地应用的身份验证和授权。这一切都很好。我希望能够在此注释上定义一些参数(特别是访问每个方法/资源所需的安全权限),这些参数可在运行时供过滤器使用以改变此行为。我注意到拦截器可以通过javax.ws.rs.ext.InterceptorContext.getAnnotations()执行此操作,但在javax.ws.rs.container.ContainerRequestContext中没有等效的过滤器。有什么想法可以实现吗?我希望能
这是我目前所拥有的:这会初始化我的REST服务packagecom.dothatapp.web.rest;importjavax.servlet.annotation.MultipartConfig;importjavax.ws.rs.ApplicationPath;importjavax.ws.rs.core.Application;@ApplicationPath("/authed/rest")publicclassJaxRsActivatorextendsApplication{}这就是我的服务的样子:importjavax.servlet.http.HttpServletReq
如何使用jax-rs发送文件以供下载? 最佳答案 importjavax.ws.rs.core.Response;importjavax.ws.rs.core.Response.ResponseBuilder;publicResponsegetFile(StringcontentType){Filef=newFile("/tmp/file.doc");ResponseBuilderresponse=Response.ok(f);response.type(contentType);response.header("Content-D
使用JAX-RS和java.time.LocalDate(java8)时出现问题。我想使用JSON将这样的对象传递到JAX-RS方法中:Person{java.time.LocalDatebirthDay;}我得到的异常是:com.fasterxml.jackson.databind.JsonMappingException:Nosuitableconstructorfoundfortype[simpletype,classjava.time.LocalDate]:cannotinstantiatefromJSONobject(needtoadd/enabletypeinformati
我希望能够从请求中打印JAX-RS2JSON负载,而不管我的应用程序服务器上的实际实现如何。我已经在SO上尝试了建议的解决方案,但所有解决方案都包含实际实现的二进制文件(如Jersey和类似的),并且我只能在我的应用程序中使用javaee-apiv7.0。我已尝试在我的客户端上实现ClientRequestFilter和ClientResponseFilter,但它们不包含序列化实体。这是一个客户端示例:WebTargettarget=ClientBuilder.newClient().register(MyLoggingFilter.class).target("http://loc