之前的系列文章,为了测试一些功能点,所以只选择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框架处理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匹配不同的资源或处理逻辑。 ...
REST是一种基于HTTP协议的轻量级设计模式,强调资源的概念,通过URI(Uniform Resource Identifier)来标识资源,并通过HTTP方法(如GET、POST、PUT、DELETE等)进行操作。RESTful API的设计使得服务接口简洁且易于...
例如,`@Post`、`@Get`、`@Put`和`@Delete`注解分别对应上述的四种操作。 至于"firstSteps"这个文件名,可能是该教程中的一个起点项目或者示例代码,它可能包含了一个简单的Restlet应用和使用jQuery进行CRUD操作的...
- 如何选择合适的HTTP方法(GET、POST、PUT、DELETE等)来设计Web服务接口。 - 实例演示:通过一个简单的示例展示如何使用Restlet框架快速搭建RESTful服务。 2. **第2章:启动Restlet应用程序**(Beginning a ...
3. **路由与处理**:讲解如何使用Restlet来定义路由规则,将不同的HTTP请求映射到相应的处理函数,以及如何处理HTTP方法(GET、POST、PUT、DELETE等)。 4. **数据交换格式**:讨论Restlet支持的数据交换格式,如...