【前言】

  面向资源的 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项目

  这里的搭建步骤不再赘述,如有需要参考,请导航至博客:http://www.cnblogs.com/qixiaoyizhan/p/5819392.html

  2、新建控制器 StudentController

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

  具体的代码如下:

 1 package Controllers;
 2
 3 import org.springframework.web.bind.annotation.*;
 4
 5 @RestController
 6 @RequestMapping("/api/Student")
 7 public class StudentController {
 8
 9     @RequestMapping(method = RequestMethod.GET)
10     public String Get() {
11         return "{\"id\":\"1\",\"name\":\"1111111111\"}";
12     }
13
14     @RequestMapping(method = RequestMethod.POST)
15     public String Post() {
16         return "{\"id\":\"2\",\"name\":\"2222222222\"}";
17     }
18
19     @RequestMapping(method = RequestMethod.PUT)
20     public String Put() {
21         return "{\"id\":\"3\",\"name\":\"3333333333\"}";
22     }
23
24     @RequestMapping(method = RequestMethod.DELETE)
25     public String 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     public String 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 @RestController
 6 @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方式

  

  

  2.Post方式

  

  

  3.Put方式

  

  

  4.Delete方式

  

  

  5.Get/id方式

  

  

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

转载于:https://www.cnblogs.com/7tiny/p/7570010.html

SpringMVC Restful api接口实现相关推荐

  1. 整合swagger2生成Restful Api接口文档

    整合swagger2生成Restful Api接口文档 swagger Restful文档生成工具 2017-9-30 官方地址:https://swagger.io/docs/specificati ...

  2. 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口

    无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于PostgreSQL零代码生成CRUD增删改查RESTful API接 ...

  3. RESTful API接口基本内容

    RESTful API接口基本内容 目录 RESTful API接口基本内容 一.RESTful是什么? 1.1.基本特点 1.2.设计概念和准则 1.3.http协议 二.RESTful与SOAP ...

  4. Restful API是什么?初探Restful API,传统接口写法与Restful API接口写法区别

    Restful API是什么?初探Restful API?为什么要用Restful API?传统接口写法与Restful API接口写法区别,带着这些问题我们来具体了解下Restful API: 目录 ...

  5. swagger php 生成api,blog/Swagger生成php restful API接口文档.md at master · lfq618/blog · GitHub...

    Swagger生成php restful API接口文档 背景 我们的restful api项目采用yaf框架, 整体结构简单, 我们只需要用swagger扫描 application目录即可. 下面 ...

  6. RESTful API接口设计规范

    目录 一.RESTful的诞生背景 二.什么是RESTful? 三.Restful API接口设计规范 3.1.协议 3.2.路径规则|域名 3.3.版本控制 3.4.请求类型 3.5.传入参数 3. ...

  7. 无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口

    无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接 ...

  8. springMvc接口开发--对访问的restful api接口进行拦截实现功能扩展

    1.视频参加Spring Security开发安全的REST服务\PART1\PART1 3-7 使用切片拦截REST服务三通it学院-www.santongit.com-.mp4 讲的比较的经典,后 ...

  9. 让SpringMVC Restful API优雅地支持多版本

    好久没有更新博客,难得有空,记录一下今天写的一个小工具,供有需要的朋友参考. 在移动APP开发中,多版本接口同时存在的情况经常发生,通常接口支持多版本,有以下两种方式: 1.通过不同路径区分不同版本 ...

最新文章

  1. 30分钟看懂XGBoost的基本原理
  2. Nature:iHMP之“微生物组与炎症性肠病”
  3. python的历史 常量 注释 基础数据类型等基本操作 和if 判断语句
  4. vue2.0+wechat
  5. IBM HTTP Server Websphere Plugin
  6. 店招模块终于可以进行后台换图片了
  7. 1114. 按序打印
  8. SpringBoot执行器端点Actuator Endpoint
  9. 曾在美国生产的苹果电脑,如今却败得一塌糊涂
  10. C#获取实体的属性和值(通用于BS、cs架构)
  11. plist文件的读写
  12. 数字图像处理与分析(matlab实现)——实现空域线性及非线性低通平滑滤波
  13. 李开复给大学生的第7封信:21世纪最需要的7种人才
  14. 配电室智能辅助控制系统
  15. Pseudo-terminal will not be allocated because stdin is not a terminal
  16. 个人支付接口现状分析——总有一款适合你
  17. 微信小程序推广方式有哪些?
  18. iOS 程序员、架构师、技术经理、技术总监和CTO有啥区别?
  19. 数据分析-Excel简介
  20. 产品定位:你是钉子,还是棒槌?

热门文章

  1. golang goroutine的调度模型:MPG模式
  2. Scala分支控制 if-else之单分支的使用
  3. Python字符串前加u/r/b的作用
  4. Spring MVC在参数绑定前通过Filter过滤器改变请求参数的值
  5. python url编码 空格_使用请求和python时URL中的空格
  6. python字符串功能_python字符串内置功能
  7. 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(五)
  8. Tomcat部署的三种方式
  9. 作为初学者应该如何来学习FPGA
  10. 2.2.1操作系统之处理机调度的概念及层次