由于公司项目需要最近需要接触移动开发和后台开发,网上搜索了一下后台框架,spring用的居多,平时都是写一些单片机程序和上位机程序,对后台和http了解的甚少,不过spring的文档很不错,写的很通俗易懂,以下基本都是翻译自spring的官方文档。官方链接:https://spring.io/guides/gs/rest-service/#_create_a_resource_controller
我们将会构建一个web服务 ,它接收http get请求,请求格式如下:http://localhost:8080/greeting
然后会返回一个json应答
{"id":1,"content":"hello, spring"}
我们可以通过在查询字符串中添加name参数来自定义content内容,比如:
http://localhost:8080/greeting?name=User
name参数会替换默认的world值,json应答将会被更改为:
{"id":1,"content":"hello, User"}
我使用的开发环境是intelliJ IDEA 2014 jdk1.8
首先创建java工程,添加maven管理。
在pom.xml中添加依赖:
配置好环境后我们开始构造我们的web 服务
首先我们思考一下我们的服务是如何交互的。服务会处理对/greeting的get请求,这个请求可选的带有一个name参数。这个get请求应该返回一个200 ok的应答头部和一个json的应答体。应答应答类似于下图:
id字段是一个唯一的标识符,content字段是一段欢迎语。我们创建一个资源类来为greeting资源建模。
构建一个资源控制器
spring使用控制器来处理http请求,从而构建RESTful的web服务。通过使用@RestController,下面的GreetingController能够处理对/greeting的get请求,并返回一个Greeting对象的实例。
控制器的代码很简洁。我们主要理解一下这里面的注解。
@RequestMapping注解会确保所有对/greeting的get请求都会映射到greeting方法。
@RequestParam 会把查询字符串中的参数name的值绑定到greeting方法的name参数上。这个查询参数是可选的,默认值是spring。
传统mvc控制器和RESTful web服务控制器的关键区别在于http 应答体的创建方式。传统mvc使用视图技术在服务端把数据渲染成html,而RESTful web 服务控制器只是简单的返回一个Greeting对象。这个对象的数据将会以json格式写进http应答。
Greeting对象必须转换成json然后填充到http应答中,这个过程是spring自动处理的,spring使用MappingJackson2HttpMessageConverter自动把对象转换为json。
使用spring boot 运行我们的服务。
spring 嵌入了tomcat作为http运行时,我们可以使用spring boot 开启动我们的服务。创建一个Application类
只需要添加@SpringBootApplication注解,然后在main中调用run方法就可以启动我们的服务了。
运行我们的服务,终端下会打印启动日志。
我们可以看到 spring boot 启动了嵌入的tomcat 8.5.16 tomcat监听了8080端口。
浏览器中输入http://localhost:8080/greeting
至此,我们完成了一个很简单RESTful web 服务。