构建一个简单的RESTful Web Service

2017-08-13  本文已影响0人  奔跑的荷兰猪

由于公司项目需要最近需要接触移动开发和后台开发,网上搜索了一下后台框架,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 服务。

上一篇下一篇

猜你喜欢

热点阅读