Board logo

标题: 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务-2 资源 [打印本页]

作者: look_w    时间: 2018-8-23 20:53     标题: 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务-2 资源

资源资源是组成 RESTful Web 服务的关键部分。您可以使用 HTTP 方法(如 GET、POST、PUT 和 DELETE)操作资源。应用程序中的所有内容都是资源:员工、联系人、组织等。在 JAX-RX 中,资源通过 POJO 实现,使用 @Path 注释组成其标识符。资源可以有子资源。在这种情况下,父资源是资源集合,子资源是成员资源。
在样例 Contacts 应用程序中,您将操作个人联系人和联系人集合。ContactsResource 是 /contacts URI 组成的集合资源,ContactResource 是 /contacts/{contactId} URI 组成的成员资源。下划线 JavaBean 是一个简单的 Contact 类,使用 id、名称和地址作为成员字段。参见清单 3 和清单 4 了解详情。您还可以从本文最后下载完整的代码包(参见 )。
清单 3. ContactsResource
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Path("/contacts")
public class ContactsResource {
    @Context
    UriInfo uriInfo;
    @Context
    Request request;

    @GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public List<Contact> getContacts() {
        List<Contact> contacts = >new ArrayList<Contact>();
        contacts.addAll( ContactStore.getStore().values() );
        return contacts;
    }

@Path("{contact}")
    public ContactResource getContact(
            @PathParam("contact") String contact) {
        return new ContactResource(uriInfo, request, contact);
    }
}




有几个有趣的地方需要注意。
您也许还注意到了,GET 方法返回定制 Java 对象而不是 String(纯文本),正如上一个 Hello World 示例所示。            JAX-RS 规范要求实现支持多个表示形式类型,比如 InputStream、byte[]、JAXB 元素、JAXB 元素集合等等,以及将其序列化为 XML、JSON 或纯文本作为响应的能力。下文我将提供更多有关表示形式技术的信息,尤其是 JAXB 元素表示形式。         
清单 4. ContactResource
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class ContactResource {
    @Context
    UriInfo uriInfo;
    @Context
    Request request;
    String contact;
     
    public ContactResource(UriInfo uriInfo, Request request,
            String contact) {
        this.uriInfo = uriInfo;
        this.request = request;
        this.contact = contact;
    }
     
    @GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public Contact getContact() {
        Contact cont = ContactStore.getStore().get(contact);
        if(cont==null)
            throw new NotFoundException("No such Contact.");
        return cont;
    }
}




ContactResource 的代码简单明了。注意以下内容:





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0