- 浏览: 252139 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
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 4129前面一篇文章分析了servlet里init方法,包括init方 ... -
Restlet实战(二十九)(完结篇)运行流程之源代码分析
2009-08-20 17:32 5241终于到了完结篇,也体 ... -
Restlet实战(二十八)源代码分析之压缩 (Compression)
2009-08-10 15:36 3206上篇文章我给出了如何 ... -
Restlet实战(二十七)压缩 (Compression)
2009-08-05 12:09 7163在进入代码部分之前,还是贴出<<RESTful W ... -
Restlet实战(二十六)事务 (Transaction)
2009-08-02 23:29 5337<<Restful Web Service> ... -
Restlet实战(二十五)缓存 (Cache)
2009-07-31 22:18 3950说明:以下部分文字说明摘自<<Restful We ... -
Restlet实战(二十四)获取参数值(续)
2009-07-31 14:44 10378这个系列之前已经有一篇文章写如何获取参数值,看Restlet实 ... -
欢迎加入Restlet圈子
2009-07-28 22:28 2762如果你进来是因为想看Restlet相关的文章,那么欢迎你加入r ... -
Restlet实战(二十三)实现条件GET (Conditional Get)
2009-07-28 17:47 5009先普及一下什么是条件GET,以下摘自<<Restf ... -
Restlet实战(二十二)仿造PUT和DELETE
2009-07-28 13:17 7160在Restlet实战(七)-提交和处理Web Form 中提到 ... -
Restlet实战(二十一)如何保护确定的资源(续)
2009-07-16 16:18 3967在Restlet实战(十七)如何保护确定的资源 中我给出一个如 ... -
Restlet实战(二十)使用Restlet之SSL
2009-07-15 21:37 3272待写 -
Restlet实战(十九)使用Restlet实现Web Service
2009-07-15 21:34 4288先说明本篇文章要实现的功能,仍然做一些假设,当前系统是基于Re ... -
Restlet实战(十八)Restlet如何产生WADL
2009-07-11 21:57 9808现在究竟REST是否需要WADL这种东西,有很多争论,有人说不 ... -
Restlet实战(十七)如何保护确定的资源
2009-07-11 21:55 3398在面向资源的架构中, ... -
Restlet实战(十六)结合源代码分析及使用Filter
2009-07-11 21:13 5714其实在Web应用中Filter对大家来说一点都不陌生,比如说在 ... -
Restlet实战(十五)如何与表示层交互
2009-07-10 13:51 5339首先还是设定一个应用场景,看看用restlet如何实现。 ... -
Restlet实战(十四)如何在Restlet得到Servlet request和Session
2009-07-09 16:39 11496如果你现在已经有一个web系统,而为了一些需求,你集成了res ... -
Restlet实战(十三)如何在Servlet中呼叫Restlet
2009-07-09 14:47 4506看到这个题目,或许你会问,你之前的很多文章不都是与servle ... -
Restlet实战(十二)获取参数值
2009-07-07 15:06 6914本篇文章将讲解三种不 ...
相关推荐
NULL 博文链接:https://ajaxcn.iteye.com/blog/438237
restlet项目
用户在安装了Restlet Client之后,直接点击插件图标即可开始使用,只需输入自己的网站并选择好对应的请求模式就能对网站发送Web请求并检查响应,同时使用者可以先将多个API请求组合成一个方案来创建一个针对网站的...
restlet相关文档
org.restlet.jar
Restlet与Spring 集成
一个简单的Restlet开发框架的Basic认证的例子
restlet2.1学习笔记项目代码
restlet restful,web工程,可直接运行。启动后,main方法作为client运行调用服务端。服务器数据之间沟通利器,绝对不坑。
RESTLET开发实例(二)使用Component、Application的REST服务
Restlet所需要的所有jar包 一次下载,以后高枕无忧!
Restlet API包括一些能够创建基于字符串、文件、流(stream)、通道(channel)及XML文档的表示(representation),它支持SAX、DOM及XSLT。使用FreeMaker或Apache Velocity模板引擎,你可以很容易地创建基于JSP式...
restlet入门helloworld示例
本文是对Restlet官方教程http://restlet.com/learn/tutorial/2.2/的中文翻译。
RESTLET框架学习书籍
Restlet2.0用户指南
资源里面包含了Restlet从入门到高级的开发过程,对学习Restlet有很大的帮助
restlet工程示例,restlet工程小例子
RESTLET开发实例(一)基于JAX-RS的REST服务