标签: jax-rs

JAX-RS发布多个对象

我有一个方法;

@POST
@Path("test")
@Consumes(MediaType.APPLICATION_JSON)
public void test(ObjectOne objectOne, ObjectTwo objectTwo)
Run Code Online (Sandbox Code Playgroud)

现在我知道我可以用json格式发布一个对象,只需将它放入体内即可.但是可以做多个对象吗?如果是这样,怎么样?

java rest jax-rs

74
推荐指数
4
解决办法
7万
查看次数

REST API设计 - 通过REST获取具有不同参数但相同url模式的资源

我有一个与REST网址设计相关的问题.我在这里找到了一些相关的帖子:同一资源的不同RESTful表示,这里:RESTful url来获取不同字段的GET资源,但响应并不十分清楚最佳实践是什么以及为什么.这是一个例子.

我有用于表示"用户"资源的REST URL.我可以使用id或电子邮件地址获取用户,但两者的URL表示形式保持不变.通过大量的博客和书籍,我看到人们已经以不同的方式做到了这一点.例如

在书中和stackoverflow上的某个地方阅读这个练习(我似乎无法再找到链接)

GET /users/id={id}
GET /users/email={email}
Run Code Online (Sandbox Code Playgroud)

在很多博客上阅读这种做法

GET /users/{id}
GET /users/email/{email}
Run Code Online (Sandbox Code Playgroud)

查询参数通常用于过滤网址所代表的资源的结果,但我也看到了这种做法

GET /users?id={id}
GET /users?email={email}
Run Code Online (Sandbox Code Playgroud)

我的问题是,在所有这些实践中,对于使用api的开发人员来说哪一个最有意义?为什么?我相信在REST网址设计和命名约定方面没有任何规则,但我只是想知道应采取哪条路线来帮助开发人员更好地理解apis.

所有帮助赞赏!

rest url jax-rs url-scheme url-pattern

72
推荐指数
3
解决办法
5万
查看次数

将EJB注入JAX-RS(RESTful服务)

我正在尝试通过注释将无状态EJB注入我的JAX-RS Web服务.不幸的是,EJB是公正的null,NullPointerException当我尝试使用它时,我得到了它.

@Path("book")
public class BookResource {

    @EJB
    private BookEJB bookEJB;

    public BookResource() {
    }

    @GET
    @Produces("application/xml")
    @Path("/{bookId}")
    public Book getBookById(@PathParam("bookId") Integer id)
    {
        return bookEJB.findById(id);
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

以下是有关我的机器的一些信息:

  • Glassfish 3.1
  • Netbeans 6.9 RC 2
  • Java EE 6

你们能展示一些有用的例子吗?

java rest ejb jax-rs java-ee

70
推荐指数
4
解决办法
8万
查看次数

在JAX-RS中需要@QueryParam(以及在他们缺席时该怎么做)

我使用RESTEasy JAX-RS实现将Web服务组件部署到JBoss Application Server 7.

是否有注释可用于在JAX-RS中声明必需的@QueryParam参数?而且,如果没有,那么处理缺少这些参数的情况的"标准"方法是什么?

当使用所有必需参数正确调用时,我的Web服务(资源)方法返回JSON字符串化结果,但我不确定向调用者指示缺少必需参数的最佳方法是什么.

java jax-rs

70
推荐指数
3
解决办法
8万
查看次数

如何在JAX-RS Web服务上启用跨域请求?

我开发了一组宁静的Web服务.由于错误,我无法从远程客户端调用任何这些方法 No 'Access-Control-Allow-Origin' header is present on the requested resource.

这些服务在localhost上完美运行.是否有任何更改或配置要在服务器端解决此问题.即启用跨域请求.

我正在使用WildFly 8,JavaEE 7

jax-rs cross-domain cors java-ee-7 wildfly-8

67
推荐指数
5
解决办法
8万
查看次数

如何将JSON对象发布到JAX-RS服务

我正在使用JAX-RS的Jersey实现.我想POST一个JSON对象到这个服务,但我得到一个错误代码415不支持的媒体类型.我错过了什么?

这是我的代码:

@Path("/orders")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class OrderResource {

    private static Map<Integer, Order> orders = new HashMap<Integer, Order>();

    @POST
    public void createOrder(Order order) {

        orders.put(order.id, order);
    }

    @GET
    @Path("/{id}")
    public Order getOrder(@PathParam("id") int id) {
        Order order = orders.get(id);
        if (order == null) {
            order = new Order(0, "Buy", "Unknown", 0);
        }
        return order;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是Order对象:

public class Order {
    public int id;
    public String side;
    public String symbol;
    public int quantity;
    ...
}
Run Code Online (Sandbox Code Playgroud)

像这样的GET请求可以很好地工作并以JSON格式返回一个订单:

GET http://localhost:8080/jaxrs-oms/rest/orders/123 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

但是像这样的POST请求返回415: …

json jax-rs jersey

66
推荐指数
3
解决办法
15万
查看次数

如何为JAX-RS提供@PATCH注释?

JAX-RS具有HTTP动词的注释,例如GET(@GET)和POST(@POST),但没有@PATCH注释.如何为PATCHHTTP动词添加注释?

类似于以下内容:

@PATCH
public Response someCode() {
    // Code to handle the request
}
Run Code Online (Sandbox Code Playgroud)

java jax-rs

66
推荐指数
3
解决办法
3万
查看次数

在JAX-RS资源中获取ServletContext

我正在玩JAX-RS,在Tomcat上部署.它基本上是:

@Path("/hello")
@Produces({"text/plain"})
public class Hellohandler {

    @GET
    public String hello() {
        return "Hello World";
    }

}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以抓住ServletContext我的JAX-RS资源吗?

tomcat servlets jax-rs application-variables java-ee

65
推荐指数
4
解决办法
5万
查看次数

关于使用Jersey和Guice进行RESTful服务的实用建议

从我在网上看到的情况来看,Guice + Jersey整合的最新技术水平自2008年以来一直停滞不前,似乎两支球队都陷入了僵局.问题的关键在于JAX-RS注释执行字段和方法注入,这与Guice自己的依赖注入不能很好地协作.

我发现的一些例子远远不足以阐明:

  • Iqbalyusuf 在Google App Engine上发布关于Jersey + Guice的帖子Java遭受了大量的样板(手动获取和调用注入器).我希望绑定和注入应该通过Guice注释在幕后发生.

  • Jonathan Curran的文章使用Jersey,Guice和JSR-250创建一个RESTful服务给了我希望,因为它更新(2010),但没有比显示如何在Guice ServletModule中启动Jersey服务更进一步.但是,没有任何实例依赖注入的例子.我想这是留给读者的练习.Curran的帖子实际上可能是连接Guice和Jersey的正确的第一步,所以我打算从那开始.

  • 令人着迷的詹姆斯斯特拉坎写道:

    JAX-RS适用于依赖注入框架,如Spring,Guice,GuiceyFruit或JBossMC - 你基本上可以选择你喜欢的任何一个.

    但是,从实践者的角度来看,我没有看到任何证据.

我发现缺少的是关于如何组合JAX-RS和Guice注释的实际示例和解释.例如:

  • 我相信我不能对任何资源使用构造函数注入,因为Jersey想控制它
  • 我不确定是否可以将@Inject与@PathParam,@ QueryParam等结合起来.
  • 如何在MessageBodyWriter实现中使用注入

有没有人有一些非平凡的应用程序的例子,最好是源代码,它结合了Jersey和Guice,而不会在这个过程中牺牲一个或另一个?无论如何我都会坚持这条道路,但泽西和吉斯的名单上的点点滴滴让我觉得我正在重复在我面前的其他人的工作.

java jax-rs jersey guice jsr330

65
推荐指数
3
解决办法
3万
查看次数

找不到媒体类型= application/json的MessageBodyWriter

我在使用JSON作为JAX-RS服务时遇到了问题.

下面我添加了我的代码.

这是我的服务类:

//Sets the path to base URL + /hello
@Path("/hello") 
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class Hello {

    @GET
    @Produces("application/json")
    public Student getStudent() {

        Student s = new Student();
        s.first_name = "Test First Name !!!";
        s.last_name = "Test Last Name!!!";

        return s;
    }
Run Code Online (Sandbox Code Playgroud)

Student 我想从服务中获得的课程:

@XmlRootElement
public class Student implements Serializable {

    public String first_name;
    public String last_name;

    public String getFirst_name() {
        return first_name;
    }

    public void setFirst_name(String first_name) {
        this.first_name = first_name;
    }

    public String getLast_name() {
        return last_name; …
Run Code Online (Sandbox Code Playgroud)

java rest jax-rs jersey

63
推荐指数
7
解决办法
10万
查看次数