Tag: resteasy

RESTEasy客户端:重建对象

我正在使用RESTEasy来使用REST服务,我正在尝试使用Twitter的搜索API。 所以我创建了这个界面: public interface SimpleClient { @GET @Path(“search.json”) @Produces(“application/json”) ClientResponse<Set> getSearchResults( @QueryParam(“q”) String hashtag, @QueryParam(“result_type”) String resultType ); } 并称之为: SimpleClient client = ProxyFactory.create(SimpleClient.class,”http://search.twitter.com/”); ClientResponse<Set> response = client.getSearchResults(“#wowodc”,”recent”); System.out.println(response.getEntity(Set.class)); 但我得到了: ClientResponseFailure:无法找到内容类型application / json的MessageBodyReader; charset =“utf-8”并输入interface java.util.Set 我尝试使用POJO而不是java.util.Set,但我得到了同样的exception。 唯一没有抛出exception的是使用String而不是Set。 通过阅读Web上的一些示例代码,我认为Set或POJO作为实体类型可以工作,但它不适合我。 对Twitter的查询确实返回了有效结果。

定制jackson序列化的resteasy客户端

是否可以为resteasy客户端注册自定义Jackson JSON序列化程序? 我试过做类似的事情: ResteasyClient client = new ResteasyClientBuilder() .register(new CustomSerializer()) .build(); 但它没有用。 有任何想法吗?

Resteasy Beanvalidation未被调用

问题背景 我有一个Resteasy服务,通过Resteasy的SpringContextLoaderListener使用Spring。 这是基于Resteasy版本3.0-beta-6 。 我想对传入的请求使用beanvalidation,但我无法让Resteasy调用validation器。 它的行为就像没有配置validation一样,只是将方法传递给无效的输入对象。 题 如何在Resteasy中启用beanvalidation? 我试过的 我做了以下事情: 用@ValidateRequest注释我的资源类 使用@Valid注释方法参数 注释我的输入类的约束。 添加了对resteasy-hibernatevalidator-provider的依赖 资源: @Named @Path(“users”) @ValidateRequest public class UserResource { /** * * @param user * * curl -x POST http://localhost:7016/api/1.0/users * */ @POST @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) public Response createUser(@Valid User user) { //User creation logic here. } } 用户POJO: @JsonPropertyOrder({ “user_id”, “user_name”, “email” […]

JBoss Resteasy中缺少语法生成了WADL

我设法通过使用org.jboss.resteasy.wadl.ResteasyWadlServlet ( https://stackoverflow.com/a/41471710/2528609 )获得WADL,但WADL不包含语法。 表示节点也不包含定义响应类型的element属性。 给出以下rest端点类 import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path(“user”) public class UserEndpoint { @GET @Path(“”) @Produces(MediaType.APPLICATION_JSON) public UserResponse getUser() { UserResponse response = new UserResponse(); response.name = “Michiel”; response.age = 43; return response; } } 和 public class UserResponse { public String name; public int age; } […]

如何在JAX-RS中过滤具有无效参数的请求?

“无效”是指不期望的参数。 例如: @Path(“/”) public interface ExampleInterface { @GET @Path(“/example”) public Response test( @QueryParam(“param1”) String param1, @QueryParam(“param2″) String param2 ); } 然后我称之为”…/example?param3=foo”

为什么编写媒体类型应用程序/ json失踪

基本上我有一个使用( application/json )并生成( application/json )的restful服务(post)。 此服务的单个参数是带注释的java对象。 我正在使用org.jboss.resteasy.client.ClientRequest将请求发送到服务。 但是,我在客户端和exception中得到此exception: 找不到内容类型application/json类型的writer。 这是否意味着我缺少一些图书馆jar子,或者我必须为application / json编写自己的编写器? 我正在使用resteasy 1.1 标记

RestEasy – 无法找到MessageBodyReader?

我编写了一个简单的RestEasy客户端代理来执行iTunes搜索。 它看起来像这样: @Path(“/”) public interface AppleAppStoreLookupClient { /** * Attempts to lookup an apple app store item by its ID * * @param id * The item ID * @return The app details */ @GET @Path(“/lookup”) @Produces(value = { “text/javascript” }) public AppleAppDetailsResponse lookupByID(@QueryParam(“id”) String id); } 我的JSON模型类也很简单。 实际上,对于第一次调用,我想要的只是“resultCount”值,只是为了确保连接能够正常工作。 @XmlRootElement @XmlAccessorType(XmlAccessType.NONE) public class AppleAppDetailsResponse implements […]

Beanvalidation引发ConstraintViolationException时自定义JAX-RS响应

Bean Validation是validation对象的一个​​很好的选择,但是当抛出ConstraintViolationException时如何自定义REST API的响应(使用RESTeasy)? 例如: @POST @Path(“company”) @Consumes(“application/json”) public void saveCompany(@Valid Company company) { … } 包含无效数据的请求将返回具有以下正文的HTTP 400状态代码: [PARAMETER] [saveCompany.arg0.name] [{company.name.size}] [a] 这很好,但还不够,我想在JSON文档中规范化这类错误。 我该如何自定义此行为?

RESTEasy返回的集合中的根元素名称

我在JBoss AS 6中通过RestEasy使用JAX-RS。当我的JAX-RS资源返回一个项集合时(例如通过List),RESTEasy总是使用名称collection作为根元素。 例如 computer 2500 tv 1500 此XML由以下内容生成: @Produces(“application/xml”) @Path(“xml”) @RequestScoped public class MyResource { @GET @Path(“myitems”) public List getMyItems() { return … } } 可以看出,RESTEasy创建的根标记始终是 。 另一方面,泽西岛总是创建一个名称,该名称是列表中包含的元素的复数forms: computer 2500 tv 1500 我知道可以创建一个包装类型并返回而不是List,但这是一个相当精细的解决方法,使代码更复杂。 是否可以轻松指定集合的​​根标记名称?

在相同的根上下文中托管静态内容和JAX-RS服务

我们将多个打包为WAR的Java Web应用程序打包在EAR中。 我们的RESTful服务是使用JAX-RS和特定于版本的WAR构建的。 我们希望为每个特定于版本的WAR添加静态内容,但是对于静态内容和RESTful服务API调用使用根上下文(WAR),以便以下所有URL都可以使用: {hostname}/v1/swagger.yaml <– Static Content describing the v1 API {hostname}/v1/orders/{uid} <– JAX-RS RESTful API (v1) {hostname}/v2/swagger.yaml <– Static Content describing the v2 API {hostname}/v2/orders/{uid} <– JAX-RS RESTful API (v2) 以下部署结构是我们目前拥有的,适用于JAX-RS服务,但不适用于静态内容。 换句话说,这些URL有效: {hostname}/v1/orders/{uid} <– JAX-RS RESTful API (v1) {hostname}/v2/orders/{uid} <– JAX-RS RESTful API (v2) 但问题是这些URL无法访问: {hostname}/v1/swagger.yaml <– Static Content describing the v1 API […]