使用 Maven + Jersey + Apache Tomcat 建构 RESTful Web

使用 Maven + Jersey + Apache Tomcat 建构 RESTful Web


网络上看了一些关于 RESTful Web Service 的文章,所以自己实践一个看看

Web Services 有两种,

一种是SOAP/WSDL 使用 XML-Based的技术,比较严谨的Web services;

另外一种会是比较轻量级的以JSON为传递数据的格式,而且通常也设计成RESTful的Web Services。

由于RESTful Service 很轻量、好测试(直接URL或是Postman 就可以测了),而且有弹性,

所以如果只是简单查数据,其实越来越多会使用这种方式

什么是RESTful API ?

RESTful API 是指实践 REST Representational State Transfer 的 API 设计风格

最重要的在于借用 HTTP 协定做为基础,让 API 规格简单一致,而且满轻量化

当然有很多种写法,这只是其中一种

可以使用 HTTP 方法 POST、GET、PUT、DELETE 对应到建立、读取、更新、删除等动作。

这里使用的 Jersey, 是由Sun提供的JAX-RS的参考实现。


开启Eclipse,Create 一个 maven project

pom.xml


	4.0.0
	RESTful_Test
	RESTful_Test
	0.0.1-SNAPSHOT
	war
	
		src
		
			
				maven-war-plugin
				2.6
				
					WebContent
					false
				
			
			
				maven-compiler-plugin
				3.3
				
					1.6
					1.6
				
			
		
	


	
		
			asm
			asm
			3.3.1
		
		
			com.sun.jersey
			jersey-bundle
			1.19.4
		
		
			org.json
			json
			20170516
		
		
			com.sun.jersey
			jersey-server
			1.19.4
		
		
			com.sun.jersey
			jersey-core
			1.19.4
		
	

web.xml



  RESTful_Test
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  
  
	Jersey Web Application
	com.sun.jersey.spi.container.servlet.ServletContainer
	1
  
  
    Jersey Web Application
    /crunchify/*
  
	

CtoFService.java

package com.crunchify.restjersey;

import java.util.regex.Pattern;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
 
@Path("/ctofservice")
public class CtoFService {
	@GET
	@Produces("application/xml")
	public String convertCtoF() {
 
		Double fahrenheit;
		Double celsius = 36.8;
		fahrenheit = ((celsius * 9) / 5) + 32;
 
		String result = "@Produces("application/xml") Output: nnC to F Converter Output: nn" + fahrenheit;
		return "" + "" + celsius + "" + "" + result + "" + "";
	}
 
	@Path("{c}")
	@GET
	@Produces("application/xml")
	public String convertCtoFfromInput(@PathParam("c") Double c) {
		
		Double fahrenheit = (double) 0;
		Double celsius = c;
		try {
			
			fahrenheit = ((celsius * 9) / 5) + 32;
	 
		} catch (Exception e) {
			String result = "500";
			return "" + "" + celsius + "" + "" + result + "" + "";
		}
		
		String result = "@Produces("application/xml") Output: nnC to F Converter Output: nn" + fahrenheit;
		return "" + "" + celsius + "" + "" + result + "" + "";
	}
}

执行Tomcat

可以直接用Browser 或是 Postman 测试

未带参数

http://localhost:8080/RESTful_Test/crunchify/ctofservice

带参数

http://localhost:8080/RESTful_Test/crunchify/ctofservice/99

也可以加入log 确认一下,传进去的东西对不对