- 浏览: 545528 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (251)
- UML/RUP/软件工程 (0)
- DDD:领域驱动设计 (1)
- IaaS/Paas/SaaS (1)
- Hadoop/YARN (10)
- PBDP项目 (2)
- OSGi-基础 (7)
- OSGi-Aries (2)
- OSGi-SpringDM (32)
- Oracle/MySQL/SS (8)
- Felix/Equinox/Bnd (14)
- Virgo Server/Gemini (7)
- Weblogic/JBoss/Tomcat (10)
- ActiveMQ (14)
- Camel (1)
- Spring Roo/Eclipse (7)
- Java/JSP/JSF (10)
- Maven (19)
- ESB-Mule (1)
- ESB-ServiceMix (18)
- SOA/SCA/SDO (12)
- WebService/RESTful (17)
- JS/jQuery/ExtJS (4)
- Spring/JPA/MVC (15)
- SpringSecurity (5)
- BPM/jBPM (3)
- Hudson/SVN/CI (0)
- LinuxOS/虚拟化 (25)
- Office/OpenOffice (1)
- 项目管理 (5)
- POI/jFreeChart (1)
最新评论
-
panamera:
请问JMS Transport 发布的webservice 是 ...
CXF 提供的Service Transport-JMS Transpor -
jianyi296:
where is attachment.
CXF WebService Dynamic Client -
hj01kkk:
您好,我用jdbc-user-service为什么每次验证时都 ...
SpringSecurity笔记3-Authenticating Users:Authenticaton Strategy -
wufenglin1231:
你好,我在实现Mapping exceptions to re ...
RESTful 异常处理 -
xchd:
[echo] Project: common
[echo ...
Hive安装配置学习笔记
return four types of Java constructs:
- common Java types return basic information with HTTP return codes determined by the JAX-RS runtime;
- JAXB objects return complex information with HTTP return codes determined by the JAX-RS runtime;
- JAX-RS Response objects return complex information with a programmatically determined HTTP return status. The Response object also allows HTTP headers to be specified;
- JAX-RS GenericEntity objects return complex information with HTTP return codes determined by the JAX-RS runtime. The GenericEnitity object provides more information to the runtime components serializing the data.
1. Returning plain Java constructs
通常情况下,resource class返回一个标准的Java Type, 一个JAXB对象,或者任何的对象(应用程序有对应的Entity
Provider);在这种情况下,运行环境将使用返回的对象来决定MIME type信息,运行环境也决定使用适合的HTTP
Code发送给Consumer.
(1) Returnable types: 可以是null或者是:Java 原生类型,Java原生类型的Numbet representations, JAXBObject.
(2) MIME types: 运行环境决定返回Entiy 的MIME type首先检查resource method 和 resource class的@Produce
注解;如果找到一个,将使用注解中指定的MIME type,如果没有找到,将依赖与Entity Provider来决定适合的
MIME Type.默认情况下,运行环境分配MIME Type按照下面的方式进行:
- Java primitives 和她们的Number representations被赋予MIME Type:application/octet-stream;
- JAXB objects被赋予MIME Type:application/xml.
(3) Response codes
如果resource method完成处理时没有抛出异常并且返回了Plain Java Constructs时,运行环境将自动设置response
status code:
- 204(No Content)—the resource method's return type is void
- 204(No Content)—the value of the returned entity is null
- 200(OK)—the value of the returned entity is not null
2. Basics of building responses
Response Object 包装了返回给Consumer的Entity,该对象使用ResponseBuilder工厂类进行实例化。
获取Reponse Builder: 有两种方法:
(1) 使用Response类的静态方法:
import javax.ws.rs.core.Response; Response r = Response.ok().build();
(2) 使用ResponseBuilderImpl类
import javax.ws.rs.core.Response; import org.apache.cxf.jaxrs.impl.ResponseBuilderImpl; ResponseBuilderImpl builder = new ResponseBuilderImpl(); builder.status(200); Response r = builder.build();
3. Creating responses for common use cases
(1) Creating responses for successful requests
例如:下面的例子返回HTTP Status 200并包含一个Entity:Customer:
import javax.ws.rs.core.Response; import demo.jaxrs.server.Customer; Customer customer = new Customer("Jane", 12); return Response.ok(customer).build();
如果希望返回值是200,但没有Content,可以使用Response.noContent() method:
import javax.ws.rs.core.Response; return Response.noContent().build();
(2) Creating responses for redirection
Response Class 提供了method用于处理redirection response statuses:
A. 303 See Other:当request resource需要用久的重定向consumer至一个新的resource时,使用Response类的
seeOther() method;
B. 304 Not Modified:当request resource没有改变时,使用notModified() method;
import javax.ws.rs.core.Response; return Response.notModified().build();
C. 307 Temporary Redirect:当request resource需要引导consumer至一个新的resource,但是想consumer继续
使用这个resource来处理未来的request时,使用temporaryRedirect() method.
(3) Creating responses to signal errors
Response Class提供了类处理两个基本的Error:
A. serverError()(): Status of 500 Internal Server Error;
B. notAcceptable()(java.util.List<javax.ws.rs.core.Variant> variants): 创建一个Reponse,有406 Status Code和一
个Entity(包含a list of acceptable resource types).
import javax.ws.rs.core.Response; return Response.serverError().build();
4. Handling more advanced responses
(1) Adding custom headers
import javax.ws.rs.core.Response; import org.apache.cxf.jaxrs.impl.ResponseBuilderImpl; ResponseBuilderImpl builder = new ResponseBuilderImpl(); builder.header("username", "joe"); Response r = builder.build();
(2) Adding a cookie
import javax.ws.rs.core.Response; import javax.ws.rs.core.NewCookie; NewCookie cookie = new NewCookie("username", "joe"); Response r = Response.ok().cookie(cookie).build();
(3) Setting the response status
import javax.ws.rs.core.Response; import org.apache.cxf.jaxrs.impl.ResponseBuilderImpl; ResponseBuilderImpl builder = new ResponseBuilderImpl(); builder.status(404); Response r = builder.build();
(4) Setting cache control directives
import javax.ws.rs.core.Response; import javax.ws.rs.core.CacheControl; import org.apache.cxf.jaxrs.impl.ResponseBuilderImpl; CacheControl cache = new CacheControl(); cache.setNoCache(true); ResponseBuilderImpl builder = new ResponseBuilderImpl(); builder.cacheControl(cache); Response r = builder.build();
5. Returning entities with generic type information
如果应用程序需要更多的控制返回对象的MIME Type或者Entity Provider序列化Reponse, JAX-RS类
javax.ws.rs.core.GenericEntity<T>提供了更细粒度的控制。
Creating a GenericEntity<T> object
有两种方法:
A. 使用将被包装的Entity来创建GenericEntity<T>的子类:
import javax.ws.rs.core.GenericEntity; List<String> list = new ArrayList<String>(); GenericEntity<List<String>> entity = new GenericEntity<List<String>>(list) {}; Response response = Response.ok(entity).build();
B. 使用Entity的Generic Type信息直接创建Instance:
import javax.ws.rs.core.GenericEntity; AtomicInteger result = new AtomicInteger(12); GenericEntity<AtomicInteger> entity = new GenericEntity<AtomicInteger>(result, result.getClass().getGenericSuperclass()); Response response = Response.ok(entity).build();
发表评论
-
测试RESTful WebService的客户端工具-Poster
2012-08-24 10:54 1441Poster是一款用于与WebService副去其端进行交互并 ... -
CXF开发End-to-End RESTful WebService
2012-08-23 11:12 1167下面已具体的例子演示开发End-to-End RESTful ... -
CXF 提供的Service Transport-JMS Transpor
2012-08-22 09:33 1421下面以一个例子来展示JMS Transport的功能: 1. ... -
CXF 提供的Service Transport-HTTPS Transpor
2012-08-20 11:22 1101HTTPS是HTTP和安全协议的联合,用于访问敏感的信息。HT ... -
CXF 提供的Service Transport-HTTP Transport
2012-08-20 09:32 1411完整代码参考http://springsfeng.ite ... -
基于Simple Fronted的WebService开发
2012-08-20 08:54 985采用Simple frontend方式开发WebService ... -
Web Service Context示例
2012-08-17 11:28 1352Web service context指Endpoint之间传 ... -
CXF Provider and Dispatch Services
2012-08-17 10:22 1523Provider and Dispatch services用 ... -
CXF WebService Dynamic Client
2012-08-17 09:48 5491即在在运行期间在内存中动态的生成Client(SEI和Data ... -
Contract-First方式开发WebService及WSDL2Java工具
2012-08-16 10:26 1849WSDL文件:参考附件OrderP ... -
CXF 架构
2012-08-15 10:36 1596CXF Architecture 建立在下 ... -
WebService定义及SOAP通信方式
2012-08-14 09:47 1609W3C对WebService的定义: A Web ... -
RESTful 异常处理
2012-07-27 11:42 20231. Using WebApplicaitonExceptio ... -
传输信息至Resource Classes and Methods
2012-07-27 08:52 1505运行期间,Parameters, fields, and be ... -
RESTful 中创建"资源"
2012-07-26 09:19 1583RESTful 中所有的请求都是由资源来处理的。JAX-RS ... -
RESTful Web Services理论简介
2012-07-26 08:48 1199Representational State Transfer ...
相关推荐
您可以为每个要使用的API服务生成一个Consumer。 每个使用者可以具有多个形状的任意数量的端点。 端点表示例如REST API上的资源,例如/ users。 端点返回“形状集合”。 您可以在此处对API提供的方法进行建模。 ...
kinesis-stream-consumer v2.1.9 ...kpl-deagg-async.js模块副本kpl-deagg.js一个新的承诺,返回deaggregateAsync基于函数deaggregate作用 依存关系 aws-stream-consumer-core模块-此Kinesis流使用者模块使用的通
蓝智Twit 模块的包装器,它使用 Bluebird 承诺库添加返回承诺的getAsync和postAsync方法用法由于 Twit 回调返回多个值,我们使用 Bluebird 的spread函数使事情变得更容易: var BluTwit = require ( './blu-twit.js'...
black-bits / laravel-api-consumer包的展示这是包的示例实现。 它通过使用两个简单的API演示了当前实现的功能... 我们利用我们的通过符号或名称过滤/搜索公司JSONPlaceholder API提供了直接返回演示数据的REST API。
node_producer_consumer_challenge 构建一个简单的生产者/消费者系统。 在这个系统中,Generator 会发送一系列随机的算术表达式,而 Evaluator 会接受这些表达式,计算结果,然后将解决方案报告给 Generator。 要求...
项目需求:将kafka解析来的日志获取到数据库的变更记录,...consumer_group=test100 passwd = tracking port = 3306 host = xxxxxxxxxx user = track schema = track dd_socket = dd_host = xxxxxxxxxxxx dd_port = 330
Create React App入门该项目是通过引导的。... eject ,您将无法返回! 如果您对构建工具和配置选择不满意,则可以随时eject 。 此命令将从您的项目中删除单个生成依赖项。 相反,它将所有配置文件和传递依赖项(webpac
eject ,您将无法返回! 如果您对构建工具和配置选择不满意,则可以随时eject 。 此命令将从您的项目中删除单个生成依赖项。 而是将所有配置文件和传递依赖项(Webpack,Babel,ESLint等)直接复制到
Dubbo是Alibaba开源的分布式服务框架,我们可以...只选择最快一个返回响应的,然后将调用结果返回给服务消费方(Consumer),显然这种方式是以冗余服务为基础的,需要消耗更多的资源,但是能够满足高实时应用的需求。
在此系统中,生成器将发送一系列随机算术表达式,而评估器将接受这些表达式,计算结果,然后将解决方案报告给生成器。 要求 至少,我们希望看到以下实现: 生产者和消费者作为单独的NodeJS服务。 生产者生成两个...
表达式消费者 一个RESTful服务的Node.js写消耗的另外的表达,评估并报告解决方案回生产者。 要求 用于运行测试的 (可选) 安装 克隆此存储库,或将源下载为 .zip 存档 cd进入克隆目录或解压存档 ...
eject ,您将无法返回! 如果您对构建工具和配置选择不满意,则可以随时eject 。 此命令将从您的项目中删除单个生成依赖项。 相反,它将所有配置文件和传递依赖项(webpack,Babel,ESLint等)直接复
只选择最快一个返回响应的,然后将调用结果返回给服务消费方(Consumer),显然这种方式是以冗余服务为基础的,需要消耗更多的资源,但是能够满足高实时应用的需求。 有关Dubbo服务框架的简单使用,可以参考我的其他...
Create React App入门 ... eject ,您将无法返回! 如果您对构建工具和配置选择不满意,则可以随时eject 。 此命令将从项目中删除单个构建依赖项。 相反,它将所有配置文件和传递依赖项(webpack,Babel,ESL
用户界面-视图和网络Spring MVC-用于Thymeleaf视图返回的控制器和全局异常管理器Thymeleaf-使用html模板简化Spring bean支持的表单。 Spring验证-Hibernate验证器用于验证用户创建表单和货币转换表单。 这是使用验证...
模块的包装器,其get / post方法返回本机 用法 当Twit回调返回多个值时,我们使用then函数使事情变得简单: var Twit = require ( 'twit-promise' ) ; var T = new Twit ( { consumer_key : '...' , consumer_...
在此系统中,生成器将发送一系列随机算术表达式,而评估器将接受这些表达式,计算结果,然后将解决方案报告给生成器。 项目要求 至少,我们希望看到以下实现: 生产者和消费者作为单独的NodeJS服务。 生产者生成...
在此系统中,生成器将发送一系列随机算术表达式,而评估器将接受这些表达式,计算结果,然后将解决方案报告给生成器。 要求 至少必须执行以下操作: 生产者和消费者作为单独的NodeJS服务。 生产者生成两个正整数...
然后,它进行调用并将数据返回给调用函数。 例子 GET请求(获取产品) Future getProducts () async { // Initialize the API WooCommerceAPI wooCommerceAPI = WooCommerceAPI ( url : ...
#身份验证 身份验证过程使用 [ OAuth]。... // 将veryifcationToken 设置为从用户身份验证返回的令牌,该令牌作为参数提供给您的回调网址。 token.getProvider().retrieveAccessToken(token.getCon