【前言】

  面向资源的 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")

  具体的代码如下:

 package Controllers;

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

 @RestController
 @RequestMapping("/api/Student")
 public class StudentController {

     @RequestMapping(method = RequestMethod.GET)
     public String Get() {
         return "{\"id\":\"1\",\"name\":\"1111111111\"}";
     }

     @RequestMapping(method = RequestMethod.POST)
     public String Post() {
         return "{\"id\":\"2\",\"name\":\"2222222222\"}";
     }

     @RequestMapping(method = RequestMethod.PUT)
     public String Put() {
         return "{\"id\":\"3\",\"name\":\"3333333333\"}";
     }

     @RequestMapping(method = RequestMethod.DELETE)
     public String DELETE() {
         return "{\"id\":\"4\",\"name\":\"4444444444\"}";
     }

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

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

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

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

   @ResponseBody    //用于返回json数据或者text格式文本
     @RequestMapping(value = "/TestJson", method = RequestMethod.GET)
     public String TestJson() {
         return "{\"id\":\"1001\",\"name\":\"zhangsan\"}";
     }

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


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

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

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

【系统测试】

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

  1.Get方式

  

  

  2.Post方式

  

  

  3.Put方式

  

  

  4.Delete方式

  

  

  5.Get/id方式

  

  

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

SpringMVC Restful api接口实现的更多相关文章

  1. Java 调用Restful API接口的几种方式--HTTPS

    摘要:最近有一个需求,为客户提供一些Restful API 接口,QA使用postman进行测试,但是postman的测试接口与java调用的相似但并不相同,于是想自己写一个程序去测试Restful ...

  2. 初识restful api接口

    一.restful api接口举例 实现功能 传统方式 restful方式 url HTTP方法 url HTTP方法 查询 /user/query?name=knyel GET /user?name ...

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

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

  4. 使用Flask设计带认证token的RESTful API接口

    大数据时代 Just a record. 使用Flask设计带认证token的RESTful API接口[翻译] 上一篇文章, 使用python的Flask实现一个RESTful API服务器端  简 ...

  5. Spring Boot入门系列(二十)快速打造Restful API 接口

    spring boot入门系列文章已经写到第二十篇,前面我们讲了spring boot的基础入门的内容,也介绍了spring boot 整合mybatis,整合redis.整合Thymeleaf 模板 ...

  6. 用 shell 脚本做 restful api 接口监控

    问题的提出 基于历史原因,公司有一个"三无"采集服务--无人员.无运维.无监控--有能力做的部门不想接.接了的部门没能力.于是就一直这样裸奔,直到前几天一个依赖于这个采集服务的大数 ...

  7. Spring Boot入门系列(二十一)如何优雅的设计 Restful API 接口版本号,实现 API 版本控制!

    前面介绍了Spring Boot 如何快速实现Restful api 接口,并以人员信息为例,设计了一套操作人员信息的接口.不清楚的可以看之前的文章:https://www.cnblogs.com/z ...

  8. Restful API 接口设计标准及规范

    Restful API 接口设计标准以及规范 RESTful概念 理解和评估以网络为基础的应用软件的架构设计,得到一个功能强.性能好.适宜通信的架构.REST指的是一组架构约束条件和原则." ...

  9. Postman如何通过xmysql工具的Restful API 接口访问MySQL

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 导语 有时候用 Postman 接口测试需要获取MySQL的查询结果做接口输出的校验,这里介绍下 Postman 通过 R ...

随机推荐

  1. 谈谈Golang中goroutine的调度问题

    goroutine的调度问题,同样也是我之前面试的问题,不过这个问题我当时并不是很清楚,回来以后立马查阅资料,现整理出来备忘. 有一些预备知识需要说明,就是操作系统中的线程.操作系统中的线程分为两种: ...

  2. 用户管理-linux基础

    用户管理 useradd -u -g -G(附加组) ,-c -d -s -r(创建系统用户)   -M (不创建家目录)    思考:删除user1用户家目录,如何还原.        可以#cp ...

  3. latex中pdflatex与xelatex的区别

    1. PDFTeX程序:Tex语言的一个实现,也就是把Tex语言转换为排版的一个程序.它会把TeX 语言写的代码直接编译成 PDF文件. 2. PDFLaTeX命令:PDFTeX程序中的命令,用来编译 ...

  4. SoapUI进行接口测试,怎么应对接口地址总是变化!

    如果是没有代码能力的小白,要利用工具进行接口测试的时候,经常会遇到接口地址或者接口参数变化的问题,然后不得不在他们改了接口之后,就手动去改所有的请求链接地址和接口参数!1-5个请求,我们手动改还应付的 ...

  5. atoi()函数(转载)

    atoi()函数 原型:int  atoi (const  char  *nptr) 用法:#include  <stdlib.h> 功能:将字符串转换成整型数:atoi()会扫描参数np ...

  6. iOS 微信支付流程详解

    背景 自微信支付.支付宝支付入世以来,移动端的支付日渐火热.虚拟货币有取代实体货币的趋向(这句纯属扯淡,不用管),支付在app开发中是一项基本的功能,有必要去掌握.从难易程度上讲,不管是微信支付还是支 ...

  7. (转载)深入Java关键字this的用法的总结

    在Java程序设计中经常会见到this的使用,this使得程序设计变得规范.简单.灵活.但是在使用过程中,在不同场 合它的含义并不完全相同,使用不当还会出现错误, 本文对this的几种用法和出现的问题 ...

  8. C++中const关键字用法

    为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替 ...

  9. Docker打包 Asp.Net Core应用,在CentOS上运行

    本文主要介绍下运用docker虚拟技术打包Asp.net core应用. Docker作为一个开源的应用容器引擎,近几年得到广泛的应用,使用Docker我们可以轻松实现应用的持续集成部署,一次打包,到 ...

  10. 有向图和拓扑排序Java实现

    package practice; import java.util.ArrayDeque; import java.util.Iterator; import java.util.Stack; pu ...