- 浏览: 253482 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
fjdingsd:
目前基于REST的Java框架不包括Jersey吗
Hello REST!!! -
qq690388648:
不错,说的很好!
Restlet实战(十四)如何在Restlet得到Servlet request和Session -
zhuanbiandejijie:
唉... 你09年就接触Restlet了.15年我才开始看Re ...
Hello REST!!! -
zmjiao:
client.options( 这个是那个包下面的? rest ...
Restlet实战(十八)Restlet如何产生WADL -
shihezichen:
对于最近很多人都在讨论的, 使用REST时就不应该掺杂事务的看 ...
Restlet实战(二十六)事务 (Transaction)
之前的系列文章,为了测试一些功能点,所以只选择get这种情况,本文将添加另外三种主要的方法POST, PUT, DELETE.对应我们的业务方法是新增、修改、删除。此文对上篇文章示例代码进行修改。
首先在CustomerResource里加入代码:
@Override public boolean allowPut() { return true; } @Override public boolean allowPost() { return true; } @Override public boolean allowDelete() { return true; } @Override public void storeRepresentation(Representation entity) throws ResourceException { Form form = new Form(entity); Customer customer = new Customer(); customer.setName(form.getFirstValue("name")); customer.setRemarks("This is an example which receives request with put method and save data"); customerDAO.saveCustomer(customer); } @Override public void acceptRepresentation(Representation entity) throws ResourceException { Form form = new Form(entity); Customer customer = new Customer(); customer.setId(customerId); customer.setName(form.getFirstValue("name")); customer.setRemarks("This is an example which receives request with post method and update data"); customerDAO.updateCustomer(customer); } @Override public void removeRepresentations() throws ResourceException { customerDAO.deleteCustomer(customerId); }
这里稍微说明一下,如果你想增加put方法,则需要override方法allowPut,并使之返回值为true,同样,对post,delete是一样的,如果你觉得指定三个方法太多,那么你可以用下面的代码来替代上面三个方法:
@Override public boolean isModifiable() { return true; }
在数据层的接口类和实现类里面加入相应的调用代码:
public interface CustomerDAO { public String getCustomerById(String id); public void saveCustomer(Customer customer); public void updateCustomer(Customer customer); public void deleteCustomer(String id); }
public class CustomerDAOImpl implements CustomerDAO{ Logger logger = Logger.getLogger(this.getClass().getName()); public String getCustomerById(String id){ //get other information through id such as name, no, address etc. String name = "ajax"; String address= "Shanghai"; return "The customer name is " + name + " and he is from " + address; } public void saveCustomer(Customer customer){ //save the customer data into db System.out.println("save the infomation of customer into database"); } public void updateCustomer(Customer customer){ System.out.println("update the customer whose id is " + customer.getId()); } public void deleteCustomer(String id){ System.out.println("delete the customer whose id is " + id); } }
为了封装传递的参数,创建一个Customer BO:
public class Customer implements Serializable{ private static final long serialVersionUID = 4021273041291957638L; private String id; private String name; private String phone; private String address; private String email; private String remarks; //getter and setter method }
下面使用Restlet提供的客户端来测试上述代码:
public class CustomerResourceTest extends TestCase{ public static void testStoreRepresentation(){ Client client = new Client(Protocol.HTTP); Reference itemsUri = new Reference("http://localhost:8080/restlet/resources/customers/1"); Form form = new Form(); form.add("name", "Ajax"); form.add("description", "test store presentation"); Representation rep = form.getWebRepresentation(); Response response = client.put(itemsUri, rep); assertTrue(response.getStatus().isSuccess()); } public static void testAcceptRepresentation(){ Client client = new Client(Protocol.HTTP); Reference itemsUri = new Reference("http://localhost:8080/restlet/resources/customers/1"); Form form = new Form(); form.add("name", "Ajax_cn"); form.add("description", "test update presentation"); Representation rep = form.getWebRepresentation(); Response response = client.post(itemsUri, rep); assertTrue(response.getStatus().isSuccess()); } public static void testDeleteRepresentation(){ Client client = new Client(Protocol.HTTP); Reference itemsUri = new Reference("http://localhost:8080/restlet/resources/customers/1"); Response response = client.delete(itemsUri); assertTrue(response.getStatus().isSuccess()); } }
这里唯一想说的是看测试第一个方法里面的URL的定义:
Reference itemsUri = new Reference("http://localhost:8080/restlet/resources/customers/1");
按照资源的划分,这样的URL是不合适的,正确的URL应该是:
Reference itemsUri = new Reference("http://localhost:8080/restlet/resources/customers");相应的method是PUT。如果不是很理解,看这个系列中的一篇
发表评论
-
Restlet实战(三十)(完结篇)运行流程之源代码分析(续)
2009-08-24 14:25 4157前面一篇文章分析了servlet里init方法,包括init方 ... -
Restlet实战(二十九)(完结篇)运行流程之源代码分析
2009-08-20 17:32 5308终于到了完结篇,也体 ... -
Restlet实战(二十八)源代码分析之压缩 (Compression)
2009-08-10 15:36 3260上篇文章我给出了如何 ... -
Restlet实战(二十七)压缩 (Compression)
2009-08-05 12:09 7202在进入代码部分之前,还是贴出<<RESTful W ... -
Restlet实战(二十六)事务 (Transaction)
2009-08-02 23:29 5388<<Restful Web Service> ... -
Restlet实战(二十五)缓存 (Cache)
2009-07-31 22:18 3989说明:以下部分文字说明摘自<<Restful We ... -
Restlet实战(二十四)获取参数值(续)
2009-07-31 14:44 10420这个系列之前已经有一篇文章写如何获取参数值,看Restlet实 ... -
欢迎加入Restlet圈子
2009-07-28 22:28 2817如果你进来是因为想看Restlet相关的文章,那么欢迎你加入r ... -
Restlet实战(二十三)实现条件GET (Conditional Get)
2009-07-28 17:47 5046先普及一下什么是条件GET,以下摘自<<Restf ... -
Restlet实战(二十二)仿造PUT和DELETE
2009-07-28 13:17 7186在Restlet实战(七)-提交和处理Web Form 中提到 ... -
Restlet实战(二十一)如何保护确定的资源(续)
2009-07-16 16:18 3999在Restlet实战(十七)如何保护确定的资源 中我给出一个如 ... -
Restlet实战(二十)使用Restlet之SSL
2009-07-15 21:37 3326待写 -
Restlet实战(十九)使用Restlet实现Web Service
2009-07-15 21:34 4350先说明本篇文章要实现的功能,仍然做一些假设,当前系统是基于Re ... -
Restlet实战(十八)Restlet如何产生WADL
2009-07-11 21:57 9835现在究竟REST是否需要WADL这种东西,有很多争论,有人说不 ... -
Restlet实战(十七)如何保护确定的资源
2009-07-11 21:55 3429在面向资源的架构中, ... -
Restlet实战(十六)结合源代码分析及使用Filter
2009-07-11 21:13 5735其实在Web应用中Filter对大家来说一点都不陌生,比如说在 ... -
Restlet实战(十五)如何与表示层交互
2009-07-10 13:51 5371首先还是设定一个应用场景,看看用restlet如何实现。 ... -
Restlet实战(十四)如何在Restlet得到Servlet request和Session
2009-07-09 16:39 11522如果你现在已经有一个web系统,而为了一些需求,你集成了res ... -
Restlet实战(十三)如何在Servlet中呼叫Restlet
2009-07-09 14:47 4524看到这个题目,或许你会问,你之前的很多文章不都是与servle ... -
Restlet实战(十二)获取参数值
2009-07-07 15:06 6949本篇文章将讲解三种不 ...
相关推荐
本示例将详细阐述如何使用Restlet框架处理HTTP协议中的各种请求方法,如GET、POST、PUT、DELETE等。 首先,让我们了解RESTlet的基本结构。在Restlet中,应用程序由资源(Resource)组成,这些资源是可交互的对象,...
3. **定义HTTP方法**: 在Restlet类中覆盖`get()`, `post()`, `put()`, `delete()`等方法,以处理不同类型的HTTP请求。 4. **设置路由**: 指定Restlet将响应哪些URI路径。 5. **运行应用**: 将Restlet附加到一个...
- 创建`ClientResource`实例,指定目标URI,然后调用其对应HTTP方法的方法,如`get()`, `post()`, `put()`, `delete()`。 5. **数据交换格式** - RESTful服务通常使用JSON或XML作为数据交换格式。Restlet提供了`...
REST是一种轻量级的架构风格,广泛应用于互联网应用的开发,它强调通过简单的HTTP方法(如GET、POST、PUT、DELETE)来操作资源,以实现高效、可扩展的网络通信。 RESTlet框架提供了客户端和服务器端的组件,使得...
3. **定义路由**:在Restlet应用中,你需要创建一个路由(Route)来映射URL到对应的资源。这可以通过创建一个Application类来完成。 ```java import org.restlet.Application; import org.restlet.Restlet; ...
1. **RESTful服务基础**:REST是一种软件架构风格,强调通过HTTP协议暴露资源,使用HTTP方法(GET、POST、PUT、DELETE等)来操作这些资源。理解REST的基本原则和设计模式对于创建高效的API至关重要。 2. **Spring...
在这个实例中,你将学习如何使用Restlet框架结合JAX-RS来定义资源、处理HTTP方法(如GET、POST、PUT、DELETE等)以及如何处理JSON或XML数据。Restlet提供了JAX-RS兼容的组件,使得开发者可以轻松地在Restlet环境中...
REST架构基于HTTP协议,通过HTTP方法(GET、POST、PUT、DELETE等)来操作资源。资源通常由URI(Uniform Resource Identifier)唯一标识。在RESTful API中,每个URI对应一个资源,而HTTP方法定义了对这些资源的操作。...
REST是一种网络应用程序的设计风格和开发方式,基于HTTP协议,以资源为中心,通过统一资源标识符(URI)来定位资源,使用标准方法(GET、POST、PUT、DELETE等)进行操作。RESTful接口遵循这些原则,使得它们易于理解...
1. **请求构造**: `Restlet Client`允许用户手动输入或选择HTTP方法(GET、POST、PUT、DELETE等),设置URL,添加查询参数,以及定义HTTP头信息。对于POST、PUT等需要提交数据的方法,它支持多种数据格式,如JSON、...
它支持多种HTTP方法,如GET、POST、PUT、DELETE等,允许用户发送自定义请求头和POST数据,极大地简化了Web服务的交互过程。 在使用谷歌Restlet Client插件时,首先需要在你的谷歌浏览器上安装该插件。你可以通过...
RESTful是一种软件架构风格,设计模式,是基于HTTP协议的Web服务设计原则,强调资源的概念,通过URI来定位资源,通过HTTP方法(GET、POST、PUT、DELETE等)来操作资源。它简化了Web服务的开发,使得服务器端和客户端...
1. **请求方法选择**:Restlet Client支持所有常见的HTTP方法,如GET、POST、PUT、DELETE、PATCH、OPTIONS等,用户可以根据需求选择相应的方法发送请求。 2. **URL构造**:在发送请求时,可以方便地输入或粘贴URL,...
- 处理HTTP方法:Restlet支持GET、POST、PUT、DELETE等HTTP方法,通过重写`handle`或`service`方法来定义不同方法的行为。 - 构建URI路由:使用`Router`组件,可以方便地根据请求的URI匹配不同的资源或处理逻辑。 ...
例如,`@Post`、`@Get`、`@Put`和`@Delete`注解分别对应上述的四种操作。 至于"firstSteps"这个文件名,可能是该教程中的一个起点项目或者示例代码,它可能包含了一个简单的Restlet应用和使用jQuery进行CRUD操作的...
REST是一种基于HTTP协议的轻量级设计模式,强调资源的概念,通过URI(Uniform Resource Identifier)来标识资源,并通过HTTP方法(如GET、POST、PUT、DELETE等)进行操作。RESTful API的设计使得服务接口简洁且易于...
- 如何选择合适的HTTP方法(GET、POST、PUT、DELETE等)来设计Web服务接口。 - 实例演示:通过一个简单的示例展示如何使用Restlet框架快速搭建RESTful服务。 2. **第2章:启动Restlet应用程序**(Beginning a ...
3. **路由与处理**:讲解如何使用Restlet来定义路由规则,将不同的HTTP请求映射到相应的处理函数,以及如何处理HTTP方法(GET、POST、PUT、DELETE等)。 4. **数据交换格式**:讨论Restlet支持的数据交换格式,如...