说明,本系列文章所使用的Restlet版本是1.1.5, 2.0的版本API做了不少改动。不过现在还没有最终的release。所以暂时不会考虑2.0,不过后面的系列文章中会提到那些功能只有2的版本才有。
回到正题,既然主题是实战,可能读者会问,怎么不见具体的例子和代码?别急,一口吃不了个胖子,慢慢来,还是贴一个图,一张说明各个组件空间分布的图:
还是强调一下,这张图还是很有用的,后续会用示例代码结合源代码来介绍。
下面的例子是基于http://www.iteye.com/topic/182843这篇翻译文档的基础上做一些改变。
首先我们定义两个resource,一个是Order,一个是Customer,具体代码如下:
OrderResource.java
- /**
- *
- * @author ajax
- * @version 1.0
- */
- public class OrderResource extends Resource {
- String orderId = "";
- String subOrderId = "";
- public OrderResource(Context context, Request request,
- Response response) {
- super(context, request, response);
- orderId = (String) request.getAttributes().get("orderId");
- subOrderId = (String) request.getAttributes().get("subOrderId");
- // This representation has only one type of representation.
- getVariants().add(new Variant(MediaType.TEXT_PLAIN));
- }
- @Override
- public Representation getRepresentation(Variant variant) {
- Representation representation = new StringRepresentation(
- "the order id is : " + orderId + " and the sub order id is : " + subOrderId, MediaType.TEXT_PLAIN);
- return representation;
- }
- }
CustomerResource.java
- /**
- *
- * @author ajax
- * @version 1.0
- */
- public class CustomerResource extends Resource {
- String customerId = "";
- public CustomerResource(Context context, Request request, Response response) {
- super(context, request, response);
- customerId = (String) request.getAttributes().get("custId");
- // This representation has only one type of representation.
- getVariants().add(new Variant(MediaType.TEXT_PLAIN));
- }
- @Override
- public Representation getRepresentation(Variant variant) {
- Representation representation = new StringRepresentation("get customer id :" + customerId,
- MediaType.TEXT_PLAIN);
- return representation;
- }
- }
接下来定义一个Application:
OrderApplication.java
- public class OrderApplication extends Application {
- /**
- * Creates a root Restlet that will receive all incoming calls.
- */
- @Override
- public synchronized Restlet createRoot() {
- Router router = new Router(getContext());
- router.attach("/orders/{orderId}/{subOrderId}", OrderResource.class);
- router.attach("/customers/{custId}", CustomerResource.class);
- return router;
- }
- }
web.xml中的配置略过,没有好说的,跟上面链接里面的基本一致,只是名字不同而已
启动应用服务器(偶用的Tomcat),假定你的context是/restlet,在浏览器里面输入:http://localhost:8080/restlet/customers/1
http://localhost:8080/restlet/orders/1/2
浏览器页面就会相应的显示:
get customer id :1
the order id is : 1 and the sub order id is : 2
看到这里,可能有人会提出疑问,你的资源设计的有问题吧,另外你仅用了一个OrderApplicaiton,来attach两个资源,这个不觉的很奇怪吗?
是,是,是,比如说对Customer,正确的资源设计,应该是对应/customers和customers/1应该分别有两个资源与之对应,如CustomersResource和CustomerResource。需要说明的是,资源的设计非常重要,这个在很多文章,包括那本restful web service里面有提到,后续系列文章会涉及到。针对第二种情况,应该怎么去处理。下一篇文章会作进一步的说明。
相关推荐
例如,多次PUT同一个资源到相同的URI,服务器总是更新资源到相同的最终状态。 2. **资源版本控制**:通过在资源中包含版本信息,可以确保并发操作的一致性。当客户端尝试更新资源时,必须提供资源的当前版本号。...
在Restlet框架中,Component是整个应用的基础,它负责管理和协调多个Application。Application则是实际处理HTTP请求的实体,它可以包含多个不同的资源。通过Component和Application,你可以更好地组织和管理REST服务...
使用jQuery的`$.ajax()`或`$.post()`函数,我们可以发送一个POST请求到Restlet服务器,以创建新的资源。例如: ```javascript $.ajax({ type: 'POST', url: 'http://your-restlet-server.com/resources', data...
在Restlet框架中,"RestApplication"可能是一个实现了Restlet Application接口的类,负责初始化和管理REST服务的路由和行为。 总的来说,"restlet restful"项目是一个基于RESTlet框架的RESTful Web服务实现,提供了...
定义一个名为`StudentApplication`的应用类,该类继承自`javax.ws.rs.core.Application`,用于管理和注册资源。 5. **定义资源类** 实现一个具体的资源类`StudentResource`,该类需要继承自`javax.ws.rs.core....
本文将深入探讨如何使用Restlet来实现一个最简单的RESTful Web服务。 首先,了解REST的基本概念是必要的。REST强调的是资源的概念,通过URI(Uniform Resource Identifier)来标识,使用HTTP协议中的方法(如GET、...
在服务器端,RESTlet充当了一个应用服务器,支持多种Java应用服务器,如Jetty、Tomcat等。它提供了一种模块化的方式来组织和处理HTTP请求,允许开发者定义自定义的资源类来响应特定的URI路径。 客户端部分,RESTlet...
- **restletContext.xml**:这是Restlet的配置文件,定义了一个Spring组件`SpringComponent`,并设置了默认目标`defaultTarget`为`application`。`BaseApplication`类是自定义的Restlet应用程序,它使用`component....
Restlet是一个轻量级的Java Web服务开发框架,它提供了构建RESTful(Representational State Transfer)应用程序的工具和API。REST是一种架构风格,强调简洁、无状态和可缓存的网络交互,常用于构建高性能、高可用性...
Restlet是一个开源框架,专为构建RESTful(Representational State Transfer)Web服务而设计。REST是一种轻量级的架构风格,常用于构建可扩展、高性能的互联网应用程序。本项目是针对Restlet 2.1版本的学习笔记,...
第二章“Beginning a Restlet application”中,作者通过一个实际的例子引导读者逐步创建一个简单的Restlet应用。这包括设置开发环境、定义资源、处理HTTP方法(如GET、POST等)以及配置服务器。这一章节对于初学者...
用户在安装了Restlet Client之后,直接点击插件图标即可开始使用,只需输入自己的网站并选择好对应的请求模式就能对网站发送Web请求并检查响应,同时使用者可以先将多个API请求组合成一个方案来创建一个针对网站的...
Restlet是一个轻量级的Java RESTful Web服务开发库,而Spring则是一个广泛使用的全面的企业级应用框架。结合两者,我们可以创建高效、灵活的Web服务。 首先,确保你已经下载了正确的依赖。在这个配置中,Restlet的...
Restlet项目是一个开源框架,专门用于构建RESTful(Representational State Transfer)Web服务。REST是一种软件架构风格,它强调简洁、可扩展性和无状态性,是Web服务设计的主流方式。Restlet框架提供了全面的工具集...
- 创建一个`Application`类,这是Restlet应用的入口点,它定义了应用的行为和组件。 - 在`Application`类中,重写`createInboundRoot()`方法,返回你的资源类实例。 2. **定义资源类** - 创建一个`Resource`子类...
- 实例演示:通过一个简单的示例展示如何使用Restlet框架快速搭建RESTful服务。 2. **第2章:启动Restlet应用程序**(Beginning a Restlet application) - **章节概述**:本章讲解了如何创建一个新的Restlet项目...
而Restlet是一个专注于REST(Representational State Transfer)架构风格的Java库,它允许开发人员轻松地创建RESTful Web服务和客户端。将Spring与Restlet结合,可以利用Spring的强大功能来构建高效、可扩展的REST...
你可以通过实现`org.restlet.Application`接口并重写`createInboundRoot()`方法来创建一个应用。在这个方法中,你会定义你的资源。 步骤3:定义资源 资源是Restlet的核心,它代表了服务中的一个特定实体。你可以...