【前言】

  面向资源的 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. ARM处理器架构的Thumb指令集中关于IT指令的使用

    在ARMv6T2以及ARMv7架构扩展了Thumb指令集,其中加入了IT指令,进一步增强了代码的紧凑性. Thumb中有一个比较有意思的指令--IT,这条指令用于根据指定的条件来执行后面相继的四条指令 ...

  2. 关于php中的include html文件的问题,为什么html可以在php中执行

    之前在w3shXXl看的教程,上面对include的解释是把指定的文件复制到这条指令执行的地方. 这真是坑到我了..... 在了解mvc的时候,控制器显示视图时需要用include包含html视图文件 ...

  3. 基于pytorch的CNN、LSTM神经网络模型调参小结

    (Demo) 这是最近两个月来的一个小总结,实现的demo已经上传github,里面包含了CNN.LSTM.BiLSTM.GRU以及CNN与LSTM.BiLSTM的结合还有多层多通道CNN.LSTM. ...

  4. 修改xcode初始生成代码

    xcode在新建新的工程的时候会默认生成一份代码,例如新建一个c++工程,其初始的代码如下: #include <iostream> int main(int argc, const ch ...

  5. Centos7.2下Nginx配置SSL支持https访问(站点是基于.Net Core2.0开发的WebApi)

    准备工作 1.基于nginx部署好的站点(本文站点是基于.Net Core2.0开发的WebApi,有兴趣的同学可以跳http://www.cnblogs.com/GreedyL/p/7422796. ...

  6. HDU 6185 Covering 矩阵快速幂

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6185 题意:用 1 * 2 的小长方形完全覆盖 4 * n的矩形有多少方案. 解法:小范围是一个经典题 ...

  7. RGB转MIPI CSI芯片方案TC358746XBG

    型号:TC358746XBG功能:RGB888/666/565与MIPI CSI 互转通信方式:IIC/SPI分辨率:720p电源:3.3/1.2V封装形式:BGA72深圳有现货库存,价格有优势,样片 ...

  8. linux中文件I/O操作(系统I/O)

    我们都知道linux下所有设备都是以文件存在的,所以当我们需要用到这些设备的时候,首先就需要打开它们,下面我们来详细了解一下文件I/O操作. 用到的文件I/O有以下几个操作:打开文件.读文件.写文件. ...

  9. Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触

    前言:在Remoting中处理事件其实并不复杂,但其中有些技巧需要你去挖掘出来.正是这些技巧,仿佛森严的壁垒,让许多人望而生畏,或者是不知所谓,最后放弃了事件在Remoting的使用.关于这个主题,在 ...

  10. mysql varchar和char的根本区别深度详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt337 VARCHAR 和 CHAR 是两种最主要的字符串类型 .不幸的是,很 ...