WEB开发网
开发学院软件开发Java 用 Java 技术创建 RESTful Web 服务 阅读

用 Java 技术创建 RESTful Web 服务

 2010-06-14 00:00:00 来源:WEB开发网   
核心提示: 清单 9. Content-Type 头部的使用POST/contactsHTTP/1.1Content-Type:application/jsonContent-Length:32相反地,@Produces 注释被针对 Accept 请求头进行匹配以决定客户机是否能够处理由给定方法返回的表示,

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

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

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

清单 10. Accept 头部的使用

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

在清单 10 中,对 /contacts/johndoe@us.ibm.com 的 GET 请求表明了 getByEmailAddress 方法将会被调用并且返回的格式将会是 application/json,而非 text/xml。

Providers

JAX-RS 提供程序是一些应用程序组件,允许在三个关键领域进行运行时行为的定制:数据绑定、异常映射以及上下文解析(比如,向运行时提供 JAXBContext 实例)。每个 JAX-RS 提供程序类必须由 @Provider 注释。如下的例子讨论了两个数据绑定提供程序 MessageBodyWriter 和 MessageBodyReader。

MessageBodyWriter

MessageBodyWriters 被 JAX-RS 运行时用来序列化所返回资源的表示。遵从 JSR-311 的运行时提供了对常见类型(java.lang.String、java.io.InputStream、 JAXB 对象等)的本机支持,但用户也可以向 JAX-RS 运行时提供他或她自己的 MessageBodyWriter。比如,您可以提供一个定制 MessageBodyWriter 来处理定制 ContactInfo Java 类型,如下所示。

清单 11. 定制 MessageBodyWriter

package com.ibm.jaxrs.sample.organization; 
 
import javax.ws.rs.Consumes; 
import javax.ws.rs.Produces; 
import javax.ws.rs.ext.MessageBodyWriter; 
import javax.ws.rs.ext.Provider; 
 
@Provider 
@Produces("text/xml") 
public class ContactInfoWriter implements MessageBodyWriter<ContactInfo> { 
 
 public long getSize(T t, java.lang.Class<ContactInfo> type, 
 java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] 
 annotations, MediaType mediaType) { 
 ... 
 } 
 
 public boolean isWriteable(java.lang.Class<ContactInfo> type, 
 java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] 
 annotations, MediaType mediaType) { 
 return true; 
 } 
 
 public void writeTo(ContactInfo contactInfo, java.lang.Class<ContactInfo> type, 
 java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] 
 annotations, MediaType mediaType, MultivaluedMap< 
 java.lang.String, java.lang.Object> httpHeaders, java.io.OutputStream 
 entityStream) { 
 contactInfo.serialize(entityStream); 
 } 
} 

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Java 技术 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接