`
ajax
  • 浏览: 253699 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Restlet实战(十一)结合源代码修改Restlet-Spring配置文件

    博客分类:
  • REST
阅读更多

上篇文章结合了Restlet的源码分析了Restlet-spring的配置文件,并提出了相关的问题,本篇将对这一问题做一个测试解答。

 

首先修改一下Spring的配置文件:

 

<bean id="restRoute" class="org.restlet.ext.spring.SpringRouter">
	<property name="attachments">
		<map>
			<entry key="/customers">
				<bean class="org.restlet.ext.spring.SpringFinder">
					<lookup-method name="createResource" bean="customersResource" />
				</bean>
			</entry>
			<entry key="/customers/{customerId}">
				<bean class="org.restlet.ext.spring.SpringFinder">
					<lookup-method name="createResource" bean="customerResource" />
				</bean>
			</entry>
			<entry key="/users">
				<bean class="com.mycompany.restlet.application.UserApplication"/>
			</entry>
		</map>
	</property>
</bean>

 

除了配置customer外,还配置了一个跟User相关的Application:

 

public class UserApplication extends Application{
	@Override
	public synchronized Restlet createRoot() {
		Router router = new Router(getContext());

		router.attach("/{userId}", UserResource.class);
		router.attach("/{userId}/orders", UserOrdersResource.class);
		return router;
	}
}

 

为了测试更加的清晰,不在Customer相关类上面做修改了,另外建立两个资源文件:UserResource和UserOrdersResource,对应的URL应该分别是:/users/{userId}和/users/{userId}/orders,第一个URL意思是根据id查询得到某个user,而第二个则是查询得到某个user对应的所有的order。

 

public class UserResource extends Resource {
	String userId;
	
	public UserResource(Context context, Request request, Response response) {
		super(context, request, response);
		userId = (String) request.getAttributes().get("userId");
		getVariants().add(new Variant(MediaType.TEXT_PLAIN));
	}
	
	@Override
	public Representation represent(Variant variant) {
		String userMsg = "current user id is " + userId;
		Representation representation = new StringRepresentation(userMsg,
				MediaType.TEXT_PLAIN);
		return representation;
	}
	
}

 

public class UserOrdersResource extends Resource {
	String userId;
	
	public UserOrdersResource(Context context, Request request, Response response) {
		super(context, request, response);
		getVariants().add(new Variant(MediaType.TEXT_PLAIN));
		userId = (String) request.getAttributes().get("userId");
	}
	
	@Override
	public Representation represent(Variant variant) {
		String userMsg = "get all orders for user whose id is: " + userId;
		Representation representation = new StringRepresentation(userMsg,
				MediaType.TEXT_PLAIN);
		return representation;
	}
}

 

需要注意的是,上面两个资源是直接attach到Application,而不是之前文章讲的那样由SpringFinder接管,所以,之前文章强调一些规则,如需要有一个无参的构造函数,一个init方法等,就不适用于上述的两个资源的定义。 

 

没有别的代码,来测试一下吧,打开浏览器,输入http://localhsot:8080/restlet/resources/users/1后,页面会显示:

 

current user id is 1

而输入http://localhost:8080/restlet/resources/users/1/orders 后,页面会显示:

 

get all orders for user whose id is: 1

 

我们接着测试,如果value是String,会怎么样:

分享到:
评论
3 楼 andyjackson 2010-05-11  
liuxujim 写道
请问ajax如何评论restlet和jersey?

可以添加多个variants
2 楼 deepthink 2010-04-27  
引用
public UserResource(Context context, Request request, Response response) { 
        super(context, request, response); 
        userId = (String) request.getAttributes().get("userId"); 
        getVariants().add(new Variant(MediaType.TEXT_PLAIN)); 
    } 


有一个疑问:为什么要在构造方法里面设置MediaType.TEXT_PLAN 这不就是告诉Resource 只能使用这一种MediaType么,那么我如果在GET只用的是TEXT_HTML,而DELETE我要使用APPLICATION_JSON该怎么设置?
1 楼 liuxujim 2009-07-06  
请问ajax如何评论restlet和jersey?

相关推荐

    camel-restlet-spring-web-app

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

    restlet2.0版本jee源代码

    了解了这些基本概念后,你可以通过解压"restlet-jee-2.0.14"压缩包,查看源代码、例子和API文档,更深入地学习Restlet 2.0如何在Java EE环境中实现REST服务。这将有助于你开发出高效、灵活且易于维护的Web应用程序。

    Restlet与Spring 集成

    - **依赖注入**:通过Spring的DI,可以在不修改代码的情况下改变服务的行为,如更换数据源、添加日志记录等。 - **AOP支持**:可以利用Spring的AOP功能实现事务管理、权限控制和异常处理。 - **测试友好**:由于服务...

    Restlet2 + Spring3 注解方式配置

    2. **applicationContext-restlet.xml配置**:在这个文件中,我们将配置Spring的BeanNameUrlHandlerMapping,它会将URL映射到Spring的Bean。此外,还需要配置Restlet的相关组件,例如Application和Protocol。 ```...

    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 谷歌插件 接口调试 最新

    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-Client-REST-API-Testing_v2.8.0.1

    Restlet Client是一款强大的REST API测试工具,尤其在与Chrome浏览器结合使用时,它能为开发者提供便捷的API接口测试和调试功能。此版本为v2.8.0.1,表明这是一个更新到一定稳定性的软件,可能包含了之前版本的改进...

    基于Spring的Restlet实例

    9. **部署和运行**:最后,将构建好的Spring Restlet应用打包成WAR文件,部署到Tomcat、Jetty等Servlet容器,或者使用Spring Boot的嵌入式服务器直接运行。 通过这个基于Spring的Restlet实例,开发者可以学习到如何...

    restlet2.1学习笔记项目代码

    本项目是针对Restlet 2.1版本的学习笔记,包含了实际的项目代码,旨在帮助开发者更好地理解和应用Restlet框架。 在Restlet 2.1中,有几个关键概念和组件值得深入探讨: 1. **组件(Component)**:Restlet框架的...

    Restlet Client 插件安装包

    **Restlet Client插件安装包详解** 在现代的Web应用开发中,API(Application Programming Interface)扮演着至关重要的角色,尤其是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.crx" 文件是 Chrome 插件的安装包,通常需要将此文件拖放到 Chrome 浏览器的扩展页面(chrome://extensions/)来安装。由于这是一个 zip 压缩包,用户需要...

    restlet-j2ee-2.0.15.rar

    这个压缩包可能包含了该版本的源代码、JAR文件、文档、示例以及相关的配置文件,供开发者在J2EE环境下集成和使用。 描述中提到,Restlet是对 HttpClient 的一个简单封装。HttpClient是Apache基金会的一个开源项目,...

    restlet-jee-2.0.3

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

    RESTlet-jee-2.0.9自用.rar

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

    restlet-jse

    在压缩包文件"restlet-jse"中,可能包含了Restlet-JSE的库文件、示例代码、文档或者配置文件。这些内容可以帮助初学者快速上手,通过实例了解如何在项目中引入和使用Restlet-JSE框架。开发者可以通过解压文件,运行...

    restlet源代码

    restlet源代码,描述了restlet框架中每个类的具体实现

    org.restlet.ext.spring.jar

    org.restlet.ext.spring.jar

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

    3. **历史记录**:Restlet Client会保存所有发送的请求,方便开发者回顾和复用之前的请求配置。 4. **自动化测试**:用户可以创建测试套件,将多个请求组织成测试集,自动化执行测试,节省重复工作的时间。 5. **...

    restlet-jse-2.1.1.zip

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

Global site tag (gtag.js) - Google Analytics