快速业务通道

用Java技术创建RESTful Web服务 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
不匹配的有效的 URL 部分)都将由 getByLastName 方法处理。

@GET、@POST、@PUT、@DELETE、@HEAD

@GET、@POST、@PUT、@DELETE 以及 @HEAD 均是 HTTP 请求方法指示符注释。您可以使用它们来绑定 根资源或子资源内的 Java 方法与 HTTP 请求方法。HTTP GET 请求被映射到由 @GET 注释的方法;HTTP POST 请求被映射到由 @POST 注释的方法,以此类推。用户可能还需要通过使用 @HttpMethod 注释定义 其自己的定制 HTTP 请求方法指示符。

清单 7. 定制的 HTTP 请求方法指示符注释

package com.ibm.jaxrs.sample.organization; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import javax.ws.rs.HttpMethod; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @HttpMethod("GET") public @interface CustomGET { }

上述的声明定义了 @CustomGET 注释。此注释将具有与 @GET 注释相同的语义值并可用在其位置上。

用Java技术创建RESTful Web服务(5)

时间:2011-08-02 IBM Dustin Amrhein

@Conumes 和 @Produces

@Consumes 注释代表的是一个资源可以接受的 MIME 类型。@Produces 注释代表的是一个资源可以返 回的 MIME 类型。这些注释均可在资源、资源方法、子资源方法、子资源定位器或子资源内找到。

清单 8. @Consumes/@Produces

package com.ibm.jaxrs.sample.organization; import java.util.List; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; @Path(value="/contacts") public class ContactsResource {   @GET   @Path(value="/{emailAddress:.+@.+\\.[a-z]+}")   @Produces(value={"text/xml", "application/json"})   public ContactInfo getByEmailAddress(@PathParam(value="emailAddress")   String emailAddress) {   ...   }   @GET   @Path(value="/{lastName}")   @Produces(value="text/xml")   public ContactInfo getByLastName(@PathParam(value="lastName") String lastName)  {   ...   }   @POST   @Consumes(value={"text/xml", "application/json"})   public void addContactInfo(ContactInfo contactInfo) {   ...   } }

对于上述的 getByEmailAddress 和 addContactInfo 方法,它们均能处理 text/xml 和 application/json。被接受或返回的资源表示将依赖于客户机设置的 HTTP 请求头。@Consumes 注释针对 Content-Type 请求头进行匹配,以决定方法是否能接受给定请求的内容。

在清单 9 中,application/json 的 Content-Type 头再加上对路径 /contacts 的 POST,表明我们 的 ContactsResource 类内的 addContactInfo 方法将会被调用以处理请求。

清单 9. Content-Type 头部的使用

POST /contacts HTTP/1.1 Content-Type: application/json Content-Length: 32

用Java技术创建RESTful Web服务(6)

时间:2011-08-02 IBM Dustin Amrhein

相反地,@Produces 注释被针对 Accept 请求头进行匹配以决定客户机是否能够处理由给定方法返回 的表示。

清单 10. Accept 头部的使用

GET /contacts/johndoe@us.ibm.com HTTP/1.1 Accept: application/json 

在清单 10 中,对 /contacts/johndoe@us.ibm.com 的 GET 请求表明了 getByEmailAddress 方法将 会被调用并

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号