这个系列之前已经有一篇文章写如何获取参数值,看Restlet实战(十二)获取参数值 ,在那篇文章中,提到了三种类型获取值。
1. 从Web Form中获取值
2. 从查询中获取值
3. 从Cookie中获取值
而本篇文章我翻译网上的一篇文章也是涉及到获取和设置参数值,算是一个补充,原文见这里
Restlet新手常见问题解答
我已经用Restlet几年了,因此我有这个机会去引导一些人去用它。当人们开始用的时候,总有一些问题。我把问题以及答案提出来,我想会有帮助的。
注意:答案是基于Restlet1.1
问题:我怎么存取URL查询参数?
有两个答案:
A1,明确的查询参数
最容易的方法是在Application里为这些参数指定一个名字,并告诉Routers这些参数。
典型的,你在Application里创建一个Router,然后通过attach(String uriPattern, Class<? extends Resource> targetClass)增加这个Router到Application。调用这个方法,返回一个新创建的Route。
为了让Router为每一次请求能从URL中抽取一个参数,调用extractQuery(String attribute, String parameter, boolean first),象:
router.attach("collection", MyCollectionResource.class)
.extractQuery("page", "page", true)
.extractQuery("perPage", "perPage", true);
一旦所有的被设置完,当你写你的Resource,并且想读取那个参数Restlet自动的将这个参数放到Map里,返回通过:
Request.getAttributes()
因此你能访问你的参数,象:
getRequest().getAttributes().get('page');
记住对一个请求来说,如果没有指定参数,get()的结果将是null,另外,如果你在extractQuery的最后一个参数设置为false,结果将是一个List。
A2,任意的查询参数
当然,有时,你需要在运行时读取一个任意查询参数,或者检查一个查询参数是否被指定。这在一个Resource里面很容易做到。通过getQuery(),象:
String fooParam = getQuery().getFirstValue('foo');
刚开始,getQuery返回一个“Form”,看起来很奇怪。但是对于这个案例来说,form被证明是很合适的而且有用的类。例如,它有一个一个很有用的方法getValuesMap(),作用是得到一个包含所有值的Map。
问题:我如何读取Request Headers
A1,标准HTTP headers
Restlet有意成为一个全面的Java API去构建和呼叫Restful Application,而不需要Restful Web application。因此restlet提供了一些在语义上能够描绘使用的restful的范例。
因此,想访问大多数HTTP headers你能够呼叫Request类的适当的方法。
一个快速引用:
HTTP Header |
Method of Request |
Referer |
getReferrerRef |
Cookie |
getCookies() |
If-Modified-Since, If-Unmodified-Since, If-Match, If-None-Match |
getConditions |
Authorization |
getChallengeResponse |
(这个表格没有列出所有的,仅仅作为一个例子来举例说明Restlet是如何工作的)
A2,自定义HTTP headers
当然,客户端可以发送任何header作为自定义的header,你也许需要检查什么header从客户端发送过来,以及得到对应的值。Restlet将所有的request headers放到一个Form里,这个Form可以通过在request的attributes里一个指定的关键字来访问。
例如:
Form requestHeaders = (Form) getRequest().getAttributes().get('org.restlet.http.headers');
String myAwesomenessHeader = requestHeaders.getFirstValue('X-Awesomeness');
问题:我如何设定Reponse headers
Response headers工作方式与Request headers的类似。对于标准headers,有类方法支持,对于自定义的headers,则在Reponse attributes里面指定一个关键字来实现。
A1,标准HTTP headers
HTTP Header |
Method of Response |
Location |
setLocationRef() |
Server |
setServerInfo() |
WWW-Authenticate |
setChallengeRequest() |
一些可以从Reponse表示中获得的headers
HTTP Header |
Method of Representation |
Last-Modified |
setModificationDate() |
Etag |
setTag() |
Content-Size |
setSize() |
Expires |
setExpirationDate() |
A2,自定义HTTP headers
Form responseHeaders = (Form) getResponse().getAttributes().get('org.restlet.http.headers');
if (responseHeaders == null)
{
responseHeaders = new Form();
getResponse().getAttributes().put('org.restlet.http.headers', responseHeaders);
}
responseHeaders.add('X-Awesomeness', 'true');
分享到:
相关推荐
本文将深入探讨RESTful服务中的事务处理,并以《Restlet实战(二十六)事务 (Transaction)》为例进行解析。 首先,我们要理解RESTful服务中的核心原则之一是无状态(Stateless)。这意味着每个客户端请求都包含处理...
Restlet 实现ServerResource类 列子有: 返回简单JSON类型 获取请求头,返回请求头 接收简单Json类型数据 将复杂对象使用Json格式返回
RESTlet是一款开源框架,专为构建基于REST(Representational State Transfer)原则的Web服务和应用程序设计。REST是一种轻量级的架构风格,广泛应用于互联网应用的开发,它强调通过简单的HTTP方法(如GET、POST、...
RestletClient是一款强大的接口调试工具,它为开发者提供了一个便捷的平台来测试、调试和分析RESTful Web服务。在Web应用程序开发过程中,接口调试是非常重要的一环,它可以帮助开发者验证API的功能,确保数据的正确...
org.restlet.jar
1. **获取插件**: 你已经拥有了名为"Restlet Client - REST API Testing.crx"的安装包,这是`.crx`格式的Chrome扩展程序文件。 2. **安装方法**: 将该文件直接拖拽到打开的Google Chrome浏览器窗口中,浏览器会自动...
Restlet是一个开源框架,专为构建RESTful(Representational State Transfer)Web服务而设计。REST是一种轻量级的架构风格,常用于构建可扩展、高性能的互联网应用程序。本项目是针对Restlet 2.1版本的学习笔记,...
这个方法接收请求参数,并通过`getResponse().setStatus()`设置状态码,通过`getResponse().setEntity()`设置返回的JSON值。 3. **配置Restlet与Spring**: - **restletContext.xml**:这是Restlet的配置文件,...
Restlet项目是一个开源框架,专门用于构建RESTful(Representational State Transfer)Web服务。REST是一种软件架构风格,它强调简洁、可扩展性和无状态性,是Web服务设计的主流方式。Restlet框架提供了全面的工具集...
### RESTLET开发实例详解 #### 一、RESTLET框架简介 **RESTLET**是一个轻量级且全面的框架,旨在实现REST(Representational State Transfer)原则与Java类之间的映射。该框架支持广泛的REST式系统构建,不仅仅...
Restlet是一个轻量级的Java Web服务开发框架,它提供了构建RESTful(Representational State Transfer)应用程序的工具和API。REST是一种架构风格,强调简洁、无状态和可缓存的网络交互,常用于构建高性能、高可用性...
接下来,我们进入"RESTLET开发实例(二)使用Component、Application的REST服务.doc"。在Restlet框架中,Component是整个应用的基础,它负责管理和协调多个Application。Application则是实际处理HTTP请求的实体,它...
Restlet是一款开源的Java框架,专门用于构建RESTful(Representational State Transfer)Web服务。REST是一种轻量级的架构风格,常用于构建高效、可扩展的网络应用程序。本压缩包包含Restlet框架运行所需的全部jar...
#### 二、RESTLET框架的基础架构 - **RESTLET的基本概念**: - **Resources**:表示RESTLET中的资源,是RESTLET应用的核心组件,用于处理特定URL的HTTP请求。 - **Filters**:过滤器用于拦截请求和响应,实现如...
第二章“Beginning a Restlet application”中,作者通过一个实际的例子引导读者逐步创建一个简单的Restlet应用。这包括设置开发环境、定义资源、处理HTTP方法(如GET、POST等)以及配置服务器。这一章节对于初学者...
Restlet是一款开源框架,专为构建RESTful Web服务和客户端应用程序设计。REST(Representational State Transfer)是一种轻量级的架构风格,广泛用于构建互联网应用,因为它提供了高效、分布式的系统设计原则。本文...
《深入理解org.restlet-2.3.0.jar:Java RESTful开发的得力助手》 在Java开发领域,REST(Representational State Transfer)架构风格已经成为构建Web服务的主流选择,而org.restlet-2.3.0.jar则是实现RESTful API...
#### 二、Restlet的特点与应用场景 1. **统一的开发环境**:Restlet提供了一个统一的环境来处理不同的HTTP请求方法,使得开发者能够更专注于业务逻辑而不是底层协议。 2. **改进的部署灵活性**:Restlet允许开发者...