`

Restlet实战(六)-正确设计资源

    博客分类:
  • REST
 
阅读更多

在上篇文章的末尾,我提到资源的设计有一点问题,增加客户的功能应该放到Customers resource而不是Customer Resource。本文首先会改正这个问题。

 

首先把创建Customer的代码从Customer Resource移到Customers Resource,另外创建一个查询所有customer的get方法,代码如下:

 

Java代码  收藏代码
  1. public class CustomersResource extends Resource {  
  2.     private CustomerDAO customerDAO;  
  3.       
  4.     @Override  
  5.     public void init(Context context, Request request, Response response) {  
  6.         super.init(context, request, response);  
  7.     }  
  8.       
  9.     public CustomersResource(){  
  10.         getVariants().add(new Variant(MediaType.TEXT_PLAIN));   
  11.     }  
  12.       
  13.     public CustomersResource(Context context, Request request, Response response) {  
  14.         super(context, request, response);  
  15.           
  16.         getVariants().add(new Variant(MediaType.TEXT_PLAIN));  
  17.     }     
  18.       
  19.   
  20.     @Override  
  21.     public Representation represent(Variant variant) {  
  22.         List<Customer> list = customerDAO.getAllCustomers();  
  23.         Representation representation = new StringRepresentation("", MediaType.TEXT_PLAIN);  
  24.         return representation;  
  25.     }  
  26.       
  27.     @Override  
  28.     public boolean allowPut() {  
  29.         return true;  
  30.     }  
  31.       
  32.     @Override  
  33.     public void storeRepresentation(Representation entity) throws ResourceException {  
  34.         Form form = new Form(entity);  
  35.         Customer customer = new Customer();  
  36.         customer.setName(form.getFirstValue("name"));  
  37.         customer.setAddress(form.getFirstValue("address"));  
  38.         customer.setRemarks("This is an example which receives request with put method and save data");  
  39.           
  40.         customerDAO.saveCustomer(customer);  
  41.     }  
  42.   
  43.     public void setCustomerDAO(CustomerDAO customerDAO) {  
  44.         this.customerDAO = customerDAO;  
  45.     }  
  46.       
  47. }  

 

 在Spring配置文件定义一个Customers resource bean,并修改URL映射部分:

Xml代码  收藏代码
  1. <bean id="restRoute" class="org.restlet.ext.spring.SpringRouter">  
  2.     <property name="attachments">  
  3.         <map>  
  4.             <entry key="/customers">  
  5.                 <bean class="org.restlet.ext.spring.SpringFinder">  
  6.                     <lookup-method name="createResource" bean="customersResource" />  
  7.                 </bean>  
  8.             </entry>  
  9.             <entry key="/customers/{customerId}">  
  10.                 <bean class="org.restlet.ext.spring.SpringFinder">  
  11.                     <lookup-method name="createResource" bean="customerResource" />  
  12.                 </bean>  
  13.             </entry>  
  14.         </map>  
  15.     </property>  
  16. </bean>  

 

Xml代码  收藏代码
  1. <bean id="customersResource" class="com.infosys.restlet.resource.CustomersResource" scope="prototype">  
  2.     <property name="customerDAO" ref="customerDAO" />  
  3. </bean>  

 

 在CustomerResourceTest中修改测试方法:

Java代码  收藏代码
  1. public static void testStoreRepresentation(){  
  2.     Client client = new Client(Protocol.HTTP);  
  3.     Reference itemsUri = new Reference("http://localhost:8080/restlet/resources/customers");  
  4.     Form form = new Form();  
  5.     form.add("name""Ajax");  
  6.     form.add("description""test store presentation");  
  7.     Representation rep = form.getWebRepresentation();  
  8.     Response response = client.put(itemsUri, rep);  
  9.     assertTrue(response.getStatus().isSuccess());  
  10. }  

 

分享到:
评论

相关推荐

    RESTlet-jee-2.0.9自用.rar

    "restlet-jee-2.0.9.zip"是RESTlet-jee-2.0.9的源代码或者库文件,可能包含了所需的jar包、文档和其他资源,用于在项目中直接引用或进行二次开发。 总的来说,RESTlet-jee-2.0.9自用.rar这个压缩包是一个关于使用...

    chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.rar

    在“chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.rar”压缩包中,包含的是Restlet Client的扩展文件“chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.crx”。 Restful API是现代Web服务的...

    restlet-client-rest-api-t.crx

    restlet-client 谷歌插件 接口调试 最新

    restlet-jee-2.0.3

    Restlet是一个开源框架,专为构建RESTful Web服务和应用程序设计。REST(Representational State Transfer)是一种轻量级的架构风格,广泛应用于Web服务和API的设计,强调资源的表示和状态转移。Restlet JEE 2.0.3是...

    restlet_jax-rs列子(客户端+服务端)

    RESTlet提供了一种模型-视图-控制器(MVC)的设计模式,使得服务端代码更易于理解和维护。通过使用RESTlet,开发者可以直接与HTTP协议交互,包括处理请求方法(GET, POST, PUT, DELETE等)和HTTP头信息。 **JAX-RS...

    Restlet-Client-REST-API-Testing_v2.8.0.1

    总的来说,Restlet Client v2.8.0.1是针对REST API开发和测试的重要辅助工具,尤其适合前端开发者、API接口设计者和系统集成人员使用。其易用性和强大的功能使它在同类工具中脱颖而出,能够有效地帮助用户测试和优化...

    restlet-jee-2.1.1.zip

    Restlet项目为“建立REST概念与Java类之间的映射”提供了一个轻量级而全面的框架。它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务;而且,事实证明它自从2005年诞生之时起,就是一个可靠的软件。 ...

    nexus-restlet1x-plugin-2.6.1-01.zip

    标题 "nexus-restlet1x-plugin-2.6.1-01.zip" 提供的信息表明,这是一个与 Nexus 服务器相关的插件,具体是 Restlet 1.x 版本的插件,版本号为 2.6.1-01。Nexus 是一个流行的 Maven 和 Nexus Repository Manager 的...

    restlet-jse-2.1.1.zip

    Restlet项目为“建立REST概念与Java类之间的映射”提供了一个轻量级而全面的框架。它可用于实现任何种类的REST式系统,而不仅仅是REST式Web服务;而且,事实证明它自从2005年诞生之时起,就是一个可靠的软件。 ...

    camel-restlet-spring-web-app

    标题 "camel-restlet-spring-web-app" 暗示了一个基于Apache Camel、Restlet和Spring Web的应用程序示例,该示例使用Jetty作为嵌入式服务器。这个项目结合了这些技术来创建一个RESTful API服务。让我们深入探讨每个...

    chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.zip

    "chromecj.com-Restlet-Client-REST-API-Testing_v2.8.0.1.zip" 是一个针对 Chrome 浏览器的扩展程序包,主要用于 REST API 的测试。Restlet Client 是一个强大的工具,它使得开发者和测试人员能够轻松地进行 ...

    restlet-j2ee-2.0.15.rar

    标题中的"restlet-j2ee-2.0.15.rar"指的是Restlet框架的一个特定版本,即2.0.15,适用于Java EE平台。这个压缩包可能包含了该版本的源代码、JAR文件、文档、示例以及相关的配置文件,供开发者在J2EE环境下集成和使用...

    restlet-jee-2.2.2

    "restlet-jee-2.2.2"是Restlet框架的一个特定版本,适用于Java EE环境。这个版本的发布旨在为Java EE开发者提供一个高效且灵活的工具,用于构建符合REST原则的应用程序。以下是关于Restlet和其在Java EE中的应用的...

    restlet-jse-2.1.2

    在"restlet-jse-2.1.2"这个压缩包中,我们主要关注的是Restlet框架针对Java标准版(Java SE)的实现。版本号"2.1.2"表明这是一个特定的稳定版本,可能包含了之前版本的改进和修复。 Restlet框架的核心组件包括以下...

    Web Api调试工具 Chrome插件Restlet-Client-REST-API-Testing

    Chrome插件Restlet Client - REST API Testing是一款非常实用的工具,专为Web API的调试和测试设计。这款插件支持多种HTTP方法(如GET、POST、PUT、DELETE等),并提供了丰富的功能,使得API测试过程更加高效和便捷...

    restlet-jee-2.0.6.zip_Restlet 2..0_Restlet framework2.0_org.rest

    标题"restlet-jee-2.0.6.zip_Restlet 2..0_Restlet framework2.0_org.rest"表明这是一个针对Java企业版(Java EE)的Restlet框架2.0.6版本的压缩包,其中包含了与org.restlet相关的组件。 描述中的"restlet框架所需...

    restlet-jse-2.2.1.zip

    1. **库文件**:包括JAR文件,如`restlet-api.jar`、`restlet-engine.jar`等,这些是Restlet框架的核心组件,提供了处理HTTP请求、响应、资源和组件的基本类和接口。 2. **文档**:可能包含API文档(如Javadoc),...

    Atlas2.3.0依赖: org.restlet/sqoop-1.4.6.2.3.99.0-195

    这个依赖包含了三个关键的JAR文件:`sqoop-1.4.6.2.3.99.0-195.jar`,`org.restlet-2.4.3.jar`以及`org.restlet.ext.servlet-2.4.3.jar`。下面我们将详细探讨这三个组件及其在IT领域的应用。 首先,让我们来看一下`...

    Restlet Client - REST API Testing(DHC)

    1. **安装DHC**: 通过访问链接&lt;https://chrome.google.com/webstore/detail/restlet-client-dhc-rest-api/aejoelaoggembcahagimdiliamlcdmfm&gt;,将DHC添加到Chrome或Firefox浏览器。 2. **创建请求**: 在DHC界面中...

    restlet-jse

    "Restlet-JSE"是一个基于Java的开源框架,专门用于构建RESTful(Representational State Transfer)Web服务。REST是一种轻量级的、架构风格的网络应用程序设计方法,它强调资源的表述和状态转移,通常用于构建高效、...

Global site tag (gtag.js) - Google Analytics