`
seaboycs
  • 浏览: 127958 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

REST 简单例子

 
阅读更多

项目中要用到Rest的web service,提前做了一个Demo,做下笔记。

Demo 分2个项目,一个是restServer 一个是restClient, 都是Spring MVC架构。主要看代码:

 

Pojos:

package com.pojo;

import java.io.Serializable;

public class Phone implements Serializable{
	
	private static final long serialVersionUID = 1L;
	private String phoneNumber="1";
	private String phoneType="1";

	public String getPhoneNumber() {
		return phoneNumber;
	}
	public void setPhoneNumber(String phoneNumber) {
		this.phoneNumber = phoneNumber;
	}

	public String getPhoneType() {
		return phoneType;
	}
	public void setPhoneType(String phoneType) {
		this.phoneType = phoneType;
	}
}

 

package com.pojo;

import java.io.Serializable;

public class PhoneResult implements Serializable {

	private static final long serialVersionUID = 1L;

	protected String rawPhoneNumber;
	protected String result;

	public String getRawPhoneNumber() {
		return rawPhoneNumber;
	}

	public void setRawPhoneNumber(String rawPhoneNumber) {
		this.rawPhoneNumber = rawPhoneNumber;
	}

	public String getResult() {
		return result;
	}

	public void setResult(String result) {
		this.result = result;
	}
}

 

restServer controller:

 

package com.acxiom.rest.controller;

import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.pojo.Phone;
import com.pojo.PhoneResult;

@Controller
@RequestMapping({ "/helloworld" })
public class HelloWorldController {

	@RequestMapping(value = { "/hi/{userName}" }, method = {RequestMethod.GET })
	@ResponseBody
	public String hi(@PathVariable("userName") String userName) {

		return "Hi, " + userName;
	}
	
	@RequestMapping(value = { "/hello" }, method = {RequestMethod.GET })
	@ResponseBody
	public String process(String userName) {

		return "Hello, " + userName;
	}
	
	@RequestMapping(value = { "/hiPost/{userName}" }, method = {RequestMethod.POST })
	@ResponseBody
	public String hiPost(@PathVariable("userName") String userName) {

		return "Hi, " + userName;
	}
	
	@RequestMapping(value = { "/hello" }, method = {RequestMethod.POST })
	@ResponseBody
	public String helloPost(String userName) {

		return "Hello, " + userName;
	}
	
	@RequestMapping(value = { "/hygiene/{phone}" }, method = {RequestMethod.POST },produces="application/json")
	@ResponseBody
	public PhoneResult hygiene(@PathVariable("phone")String phoneObject) {
		PhoneResult result = new PhoneResult();
		try {
			ObjectMapper mapper = new ObjectMapper();
			Phone phone = mapper.readValue(phoneObject, Phone[].class)[0];
			result.setRawPhoneNumber(phone.getPhoneNumber().toUpperCase());
			result.setResult("SUCCESS");
		}catch (Exception e) {
			e.printStackTrace();
			result.setResult("ERROR, " + e.getMessage());
		}
		
		return result;
	}
}
 

 

restClient controller:

 

package com.acxiom.rest.controller;

import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.client.RestTemplate;

import com.pojo.Phone;
import com.pojo.PhoneResult;
import com.util.JsonUtil;

@Controller
public class HomeController {

	@Autowired
	private RestTemplate restTemplate;

	@RequestMapping(value = { "/home" }, method = { org.springframework.web.bind.annotation.RequestMethod.GET })
	public String home(ModelMap model) throws Exception {

		//test get hi method 1
		String url = "http://localhost:8080/restServer/helloworld/hi/{userName}.spring";
		Map<String, String> map = new HashMap<String, String>();
		map.put("userName", "TOMMY");
		model.addAttribute("HiResponse", getResponseMessage(url, map));
		
		//test get hi method 2
		model.addAttribute("HiResponse2", this.restTemplate.getForEntity(url, String.class, "TOMMY2").getBody());
		
		//test get hello method
		url = "http://localhost:8080/restServer/helloworld/hello.spring?userName=seaboy";
		model.addAttribute("HelloResponse", getResponseMessage(url, null));
		
		//test post hello method  
		model.addAttribute("HelloPostResponse", this.restTemplate.postForEntity("http://localhost:8080/restServer/helloworld/hello.spring?userName=seaboyPost", null, String.class).getBody());
		
		//test post hygiene method
		MultiValueMap<String,Object> dataMap2 = new LinkedMultiValueMap<String, Object>();
		Phone p = new Phone();
		p.setPhoneNumber("0513 1111");
		dataMap2.add("phone", JsonUtil.javaToJson(p));
		HttpEntity<Object> entity2 = new HttpEntity<Object>(dataMap2);  
		model.addAttribute("PhoneResponse", this.restTemplate.postForObject("http://localhost:8080/restServer/helloworld/hygiene/{phone}.spring", entity2,  PhoneResult.class, dataMap2));

		
		return "home";
	}



	private String getResponseMessage(String url, Map<String, String> paras) {
		if (paras != null) {
			return this.restTemplate.getForEntity(url, String.class, paras).getBody();
		} else {
			return this.restTemplate.getForEntity(url, String.class).getBody();
		}
		
	}
}
 

 

JsonUtil:

package com.util;

import java.io.StringWriter;

import org.codehaus.jackson.map.ObjectMapper;

public class JsonUtil {

	public static String javaToJson(Object o) throws Exception{
		StringWriter writer = new StringWriter();
        ObjectMapper mapper = new ObjectMapper();
        mapper.writeValue(writer, o);
        String json=writer.toString();
        return json;
	}

}

 

home.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>HOME PAGE</title>
</head>
<body>
<div id="main">
	<div id="top">
		Hi Response: ${HiResponse} <br>
		Hi2 Response: ${HiResponse2}
	</div>
	<div id="buttom">
		Hello Response: ${HelloResponse} <br>
		Hello Post Response: ${HelloPostResponse}<br>
		Phone Response: ${PhoneResponse.result}
	</div>
</div>
</body>
</html>

 

测试结果:

Hi Response: Hi, TOMMY 
Hi2 Response: Hi, TOMMY2
Hello Response: Hello, seaboy 
Hello Post Response: Hello, seaboyPost
Phone Response: 86 0513 11112222

 

分享到:
评论
1 楼 Vicky.Hu 2013-12-31  
膜拜大神 

相关推荐

    Struts2+rest简单实例

    在这个"Struts2+rest简单实例"中,开发者创建了一个小型的示例应用,目的是帮助初学者快速理解如何在Struts2框架中集成RESTful服务。以下是这个实例中可能涉及的关键知识点: 1. **Struts2框架基础**:Struts2的...

    java rest简单实例,新手入门

    在这个“java rest简单实例,新手入门”的项目中,你将学习如何使用Java来创建RESTful API。 首先,我们需要理解REST的基本概念。REST的核心是资源,每个资源都有一个唯一的URI(统一资源标识符),通过HTTP方法来...

    struts2+rest简单实例

    在这个"struts2+rest简单实例"中,我们可以看到如何将这两种技术结合在一起,以创建一个更现代化、更灵活的应用程序。以下是一些关于Struts2和REST的关键知识点: 1. **Struts2核心概念**: - **Action类**:这是...

    开发rest的简单例子

    在这个“开发REST的简单例子”中,我们将探讨如何使用Spring框架来创建一个RESTful API。 首先,让我们了解REST的基本原则: 1. 客户端-服务器架构:客户端和服务器之间有明确的职责划分,客户端负责用户界面和用户...

    使用Spring MVC创建REST服务简单例子

    本教程将通过一个简单的例子,讲解如何利用Spring MVC创建REST服务。 首先,我们需要在项目中引入Spring MVC的相关依赖。通常,这涉及到在Maven或Gradle的配置文件中添加Spring Web和Spring MVC的依赖。例如,如果...

    MyEclipse REST Web Service 简单的实现例子

    【标题】:MyEclipse REST Web Service 简单实现案例 在当今互联网技术日新月异的时代,REST(Representational State Transfer)架构风格已成为构建Web服务的重要方式,它强调资源的表述和状态转换,简单易用且...

    REST 客户端 完整 实例 绝对经典。

    本实例聚焦于使用JAVA开发REST客户端,这是一套经典且实用的测试案例,类似于知名的Postman工具,但专为JAVA环境设计,并附带源代码。 REST客户端的主要任务是模拟用户对RESTful服务的请求,包括GET、POST、PUT、...

    Java 调用Http Rest接口 例子说明

    在这个例子中,我们同样创建了一个`HttpClient`实例,并且使用`PostMethod`对象来构造POST请求。然后添加了请求参数,并通过`executeMethod`方法执行请求。最后,释放连接资源。 #### 四、注意事项 1. **编码问题*...

    spring-data-rest-angular例子

    Spring Data REST Angular 示例项目是一个整合了Java Spring Boot框架与Angular前端框架的应用实例,展示了如何构建一个现代化的Web应用。这个项目旨在演示如何利用Spring Data REST将后端数据服务暴露为RESTful API...

    基于HTTP的REST软件架构实例

    - **实例结构**:由于压缩包文件名为"RestPro",我们可以推断这可能是一个关于REST实践的项目,可能包含服务器端代码(如Java、Python或Node.js)、客户端代码(如JavaScript或命令行工具)以及相关的配置文件。...

    kettle rest 接口 请求实例

    Kettle的JSON解析能力使这一切变得简单且高效。 总之,Kettle的REST接口功能强大,结合JSON数据处理,使得在ETL过程中与其他系统集成变得容易。无论是批量操作还是单个请求,都可以通过Kettle流畅地完成。在实际...

    spring mvc rest 小例子

    在这个小例子中,我们将探讨如何使用Spring MVC来实现REST接口。 首先,让我们理解Spring MVC的基本架构。Spring MVC通过DispatcherServlet作为前端控制器,接收HTTP请求,然后根据请求映射找到相应的Controller...

    Django-REST-framework教程中文版

    Django-REST-framework提供的序列化器(Serializers)使得这一转换变得简单快捷。序列化器可以帮助你验证输入数据、转换数据格式,并为视图提供一个简单的API。教程中提到了HyperlinkedModelSerializer,它在序列化...

    Rest 开发小案例

    本案例“Rest 开发小案例”提供了一个完整的REST开发工程,包括了使用Jersey框架实现REST服务的实例。 首先,让我们深入了解一下REST的基本概念。REST的核心思想是将系统中的各种操作视为对资源的操作,资源通过URI...

    struts2的rest风格插件实例

    安装 REST 插件非常简单,只需按如下步骤进行即可: 将 Struts 2 项目下 struts2-convention-plugin-2.1.6.jar、struts2-rest-plugin-2.1.6.jar 两个 JAR 包复制到 Web 应用的 WEB-INF/lib 路径下。 由于 Struts 2 ...

    kettle生成经纬度, REST Client、Http Client组件例子

    REST Client是Kettle的一个内置组件,它提供了一个简单的界面来配置HTTP请求的各个参数,如URL、方法类型、头部信息和请求体。Http Client则可能是一个第三方插件,提供了更高级的自定义选项,比如支持SSL、设置代理...

    REST实战(REST in Practice)

    - **实践案例**:通过一个虚构公司的例子,逐步展示如何随着业务发展,利用REST技术解决各种问题。 - **高级话题**:探讨如何利用REST构建复杂的应用程序和服务,包括高级用例中的超媒体驱动流程等。 通过以上...

    java REST接口测试 测试小例子

    在Java中,我们通常使用JUnit框架进行单元测试,不过这个例子可能没有依赖JUnit,而是直接编写了简单的测试逻辑。测试代码可能包含了对REST接口的GET、POST、PUT、DELETE等常见HTTP方法的调用,以验证接口的功能是否...

    Spring3MVC-REST-HelloWorld 实例简单代码

    虽然在这个简单的例子中没有具体的模型,但在实际应用中,你可能需要创建实体类来表示业务对象。这些实体类可以使用`@Entity`注解,配合Spring Data JPA进行数据库操作。 5. **视图解析**: 对于更复杂的场景,你...

    spring3.0 mvc和rest入门例子

    在压缩包文件"spring3_rest"中,可能包含了一个简单的Spring 3.0 MVC和REST的例子,你可以通过这个例子学习如何配置Spring MVC的DispatcherServlet,创建RESTful端点,处理请求和响应,以及如何使用JUnit进行测试。...

Global site tag (gtag.js) - Google Analytics