REST 全称是: representational state transfer,可以是一种建筑风格(architectural style),对于分布式的超媒体系统来说。
-
网络上的所有事物都可以具象为资源(通过URL)
-
每个资源都应该有唯一的标识(identifier),对资源的操作不会改变标识
-
所有的操作都是无状态的,对REST接口的访问,不会改变资源的状态
-
使用标准方法(GET、POST、PUT、PATCH、DELETE)操作资源
我们做一个小例子
1.eclipse创建一个动态项目工程
2.导入所需jar包
3. 在com.test包中创建一个RestfulTest类
package com.test;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("UserInfoService")
public class RestfulTest {
@GET
@Path("/name/{i}")
@Produces(MediaType.TEXT_XML)
public String userName(@PathParam("i") String i) {
String name = i;
return "<User>" + "<Name>" + name + "</Name>" + "</User>";
}}
@Path 注释被用来描述根资源、子资源方法或子资源的位置
@Produces 注释代表的是一个资源可以返回的 MIME 类型。
@GET、@POST、@PUT、@DELETE 以及 @HEAD 均是 HTTP 请求方法指示符注释。您可以使用它们来绑定根资源或子资源内的 Java 方法与 HTTP 请求方法。HTTP GET 请求被映射到由 @GET 注释的方法;HTTP POST 请求被映射到由 @POST 注释的方法,以此类推。用户可能还需要通过使用 @HttpMethod 注释定义其自己的定制 HTTP 请求方法指示符。
@PathParam向@Path定义的表达式注入URI参数值。
4.配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>restfulTest</display-name>
<servlet>
<servlet-name>Restful</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<!-- 服务包所在路径 -->
<param-value>com.test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Restful</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
5.在浏览器上输入url响应地址
http://localhost:8081/restfulTest/rest/UserInfoService/name/happy
6.Post接口接收json数据
@POST
@Path("/barChart")
@Produces(MediaType.APPLICATION_JSON)
public String barChart(@Context HttpServletRequest request,@Context HttpServletResponse response) throws Exception{
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods","POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setContentType("application/json;charset=utf-8");
StringBuffer str = new StringBuffer();
BufferedInputStream in = new BufferedInputStream(request.getInputStream());
int i;
char c;
while ((i = in.read()) != -1) {
c = (char) i;
str.append(c);
}
String strJson = java.net.URLDecoder.decode(str.toString(),"utf-8");
JSONObject jsonObject = JSONObject.parseObject(strJson);
int timeid = jsonObject.getInteger("timeid");
int indexid=jsonObject.getInteger("indexid");
String barChart = jsonservice.getBarChart(timeid, indexid);
return barChart;
}
版权声明:本文为yin_xing_ye原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。