java rest webapi_SpringMVC Restful api接口实现

【前言】

面向资源的 Restful 风格的 api 接口本着简洁,资源,便于扩展,便于理解等等各项优势,在如今的系统服务中越来越受欢迎。

.net平台有WebAPi项目是专门用来实现Restful api的,其良好的系统封装,简洁优雅的代码实现,深受.net平台开发人员所青睐,在后台服务api接口中,已经逐步取代了辉煌一时MVC Controller,更准确地说,合适的项目使用更加合适的工具,开发效率将会更加高效。

python平台有tornado框架,也是原生支持了Restful api,在使用上有了很大的便利。

Java平台的SpringMVC主键在Web开发中取代了Struts2而占据了更加有力的地位,我们今天着重讲解如何在Java SpringMVC项目中实现Restful api。

【实现思路】

Restful api的实现脱离不了路由,这里我们的Restful api路由由spring mvc 的 controller来实现。

【开发及部署环境】

开发环境:Windows 7 ×64 英文版

Intellij IDEA 2017.2

部署环境:JDK 1.8.0

Tomcat 8.5.5

测试环境:chrome

fiddler

【实现过程】

1、搭建spring mvc maven项目

2、新建控制器 StudentController

为了体现Restful api 我们采用注解,RequestMapping("/api/Student")

具体的代码如下:

1 packageControllers;2

3 import org.springframework.web.bind.annotation.*;4

5 @RestController6 @RequestMapping("/api/Student")7 public classStudentController {8

9 @RequestMapping(method =RequestMethod.GET)10 publicString Get() {11 return "{\"id\":\"1\",\"name\":\"1111111111\"}";12 }13

14 @RequestMapping(method =RequestMethod.POST)15 publicString Post() {16 return "{\"id\":\"2\",\"name\":\"2222222222\"}";17 }18

19 @RequestMapping(method =RequestMethod.PUT)20 publicString Put() {21 return "{\"id\":\"3\",\"name\":\"3333333333\"}";22 }23

24 @RequestMapping(method =RequestMethod.DELETE)25 publicString DELETE() {26 return "{\"id\":\"4\",\"name\":\"4444444444\"}";27 }28

29 @RequestMapping(value = "/{id}",method =RequestMethod.GET)30 public String Get(@PathVariable("id") Integer id) {31 return "{\"id\":\""+id+"\",\"name\":\"get path variable id\"}";32 }33 }

这里有Get,Post,Put,Delete分别对应 查询,添加,修改,删除四种对资源的操作,即通常所说的CRUD。

spring mvc可实现restful的方式有@Controller和@RestController两种方式,两种方式的区别如下:

@Controller的方式实现如果要返回json,xml等文本,方法体上需要额外添加@ResponseBody注解,例如:

1   @ResponseBody //用于返回json数据或者text格式文本

2 @RequestMapping(value = "/TestJson", method =RequestMethod.GET)3 publicString TestJson() {4 return "{\"id\":\"1001\",\"name\":\"zhangsan\"}";5 }

@RestController方式不需要写@ResponseBody,但是不能返回模型绑定数据和jsp视图,只能返回json,xml文本,仅仅是为了更加方便返回json资源而已。

上述的Rest方法中多写了个Get方法:

1 @RequestMapping(value = "/{id}",method =RequestMethod.GET)2 public String Get(@PathVariable("id") Integer id) {3 return "{\"id\":\""+id+"\",\"name\":\"get path variable id\"}";4 }

该方法可以直接在url拼接一个参数,更加方便对资源的定向访问,例如查一个student list 可以默认空参数,而查询对应的某一个student详情信息,可以id=studentId 定向查询单条,使得我们对资源的访问更加快捷方便。

还有一种更加简洁的写法,Spring4.3中引进了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping}几种写法,让接口的声明更加地简洁。下面代码展示了用这种注解方式进行Rest接口的定义:

1 package Controllers;2

3 import org.springframework.web.bind.annotation.*;4

5 @RestController6 @RequestMapping("/api/Student")7 public class StudentController {8

9 @GetMapping()10 public String Get() {11 return "{\"id\":\"1\",\"name\":\"1111111111\"}";12 }13

14 @PostMapping()15 public String Post() {16 return "{\"id\":\"2\",\"name\":\"2222222222\"}";17 }18

19 @PutMapping()20 public String Put() {21 return "{\"id\":\"3\",\"name\":\"3333333333\"}";22 }23

24 @DeleteMapping()25 public String DELETE() {26 return "{\"id\":\"4\",\"name\":\"4444444444\"}";27 }28

29 @GetMapping(value = "/{id}")30 public String Get(@PathVariable("id") Integer id) {31 return "{\"id\":\"" + id + "\",\"name\":\"get path variable id\"}";32 }33 }

【系统测试】

运行系统,使用fiddler调用restful api接口:

1.Get方式

2ed30cd3943f1dc37992ba99cb309157.png

66c5d0a1b1ea49fd60e2e6f5e311a5bf.png

2.Post方式

6267394e738c8d8500fb22b7d6ef71ec.png

58b766081c1e93feaafd673930c6384f.png

3.Put方式

4ca263e116ecab379049b874bd4308e8.png

0b5b0e3e2f665dd111315ba4decbd10f.png

4.Delete方式

f390bf5a94a8ed6a1eeb7acf26340ac6.png

8421e8af080c615ed6864ee95432036b.png

5.Get/id方式

9bfeec9a7e79aaa36e017837ec7cd74e.png

29db30779f9194de306a57c3af081856.png

至此,可见我们的spring mvc Restful api接口已经全部通过测试!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值