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项目
这里的搭建步骤不再赘述,如有需要参考,请导航至博客: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接口实现相关推荐
- 整合swagger2生成Restful Api接口文档
整合swagger2生成Restful Api接口文档 swagger Restful文档生成工具 2017-9-30 官方地址:https://swagger.io/docs/specificati ...
- 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口
无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于PostgreSQL零代码生成CRUD增删改查RESTful API接 ...
- RESTful API接口基本内容
RESTful API接口基本内容 目录 RESTful API接口基本内容 一.RESTful是什么? 1.1.基本特点 1.2.设计概念和准则 1.3.http协议 二.RESTful与SOAP ...
- Restful API是什么?初探Restful API,传统接口写法与Restful API接口写法区别
Restful API是什么?初探Restful API?为什么要用Restful API?传统接口写法与Restful API接口写法区别,带着这些问题我们来具体了解下Restful API: 目录 ...
- swagger php 生成api,blog/Swagger生成php restful API接口文档.md at master · lfq618/blog · GitHub...
Swagger生成php restful API接口文档 背景 我们的restful api项目采用yaf框架, 整体结构简单, 我们只需要用swagger扫描 application目录即可. 下面 ...
- RESTful API接口设计规范
目录 一.RESTful的诞生背景 二.什么是RESTful? 三.Restful API接口设计规范 3.1.协议 3.2.路径规则|域名 3.3.版本控制 3.4.请求类型 3.5.传入参数 3. ...
- 无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口
无需编程,基于微软mssql数据库零代码生成CRUD增删改查RESTful API接口 回顾 通过之前一篇文章 无需编程,基于甲骨文oracle数据库零代码生成CRUD增删改查RESTful API接 ...
- springMvc接口开发--对访问的restful api接口进行拦截实现功能扩展
1.视频参加Spring Security开发安全的REST服务\PART1\PART1 3-7 使用切片拦截REST服务三通it学院-www.santongit.com-.mp4 讲的比较的经典,后 ...
- 让SpringMVC Restful API优雅地支持多版本
好久没有更新博客,难得有空,记录一下今天写的一个小工具,供有需要的朋友参考. 在移动APP开发中,多版本接口同时存在的情况经常发生,通常接口支持多版本,有以下两种方式: 1.通过不同路径区分不同版本 ...
最新文章
- 30分钟看懂XGBoost的基本原理
- Nature:iHMP之“微生物组与炎症性肠病”
- python的历史 常量 注释 基础数据类型等基本操作 和if 判断语句
- vue2.0+wechat
- IBM HTTP Server Websphere Plugin
- 店招模块终于可以进行后台换图片了
- 1114. 按序打印
- SpringBoot执行器端点Actuator Endpoint
- 曾在美国生产的苹果电脑,如今却败得一塌糊涂
- C#获取实体的属性和值(通用于BS、cs架构)
- plist文件的读写
- 数字图像处理与分析(matlab实现)——实现空域线性及非线性低通平滑滤波
- 李开复给大学生的第7封信:21世纪最需要的7种人才
- 配电室智能辅助控制系统
- Pseudo-terminal will not be allocated because stdin is not a terminal
- 个人支付接口现状分析——总有一款适合你
- 微信小程序推广方式有哪些?
- iOS 程序员、架构师、技术经理、技术总监和CTO有啥区别?
- 数据分析-Excel简介
- 产品定位:你是钉子,还是棒槌?
热门文章
- golang goroutine的调度模型:MPG模式
- Scala分支控制 if-else之单分支的使用
- Python字符串前加u/r/b的作用
- Spring MVC在参数绑定前通过Filter过滤器改变请求参数的值
- python url编码 空格_使用请求和python时URL中的空格
- python字符串功能_python字符串内置功能
- 基于 abp vNext 和 .NET Core 开发博客项目 - 博客接口实战篇(五)
- Tomcat部署的三种方式
- 作为初学者应该如何来学习FPGA
- 2.2.1操作系统之处理机调度的概念及层次