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 定向查询单条,使得我们对资源的访问更加快捷方便。

【系统测试】

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

  1.Get方式

  

  

  2.Post方式

  

  

  3.Put方式

  

  

  4.Delete方式

  

  

  5.Get/id方式

  

  

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

时间: 2025-01-05 10:43:20

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

转:RESTful API接口设计标准及规范

引自:RESTful API接口设计标准及规范 RESTful发展背景及简介网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备…).因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致API构架的流行,甚至出现"APIFirst"的设计思想.RESTful API是目前比较成熟的一套互联网应用程序的API设计理论. REST(Representational State Transfer)表述性状态转换,RES

使用Flask设计带认证token的RESTful API接口[翻译]

上一篇文章, 使用python的Flask实现一个RESTful API服务器端  简单地演示了Flask实的现的api服务器,里面提到了因为无状态的原则,没有session cookies,如果访问需要验证的接口,客户端请求必需每次都发送用户名和密码.通常在实际app应用中,并不会每次都将用户名和密码发送. 这篇里面就谈到了产生token的方法. 完整的例子的代码 可以在github:REST-auth 上找到.作者欢迎大家上去跟他讨论. 创建用户数据库 这个例子比较接近真实的项目,将会使用F

Python Tornado搭建高并发Restful API接口服务

Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快能实现高并发.得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架.Tornado不同于其他python web框架,它是一个服务器,部署非常简单. 开发环境搭建: 1.Python3.7 2.Tornado 6.02 依赖包: peewee-asyn

HTTP methods 与 RESTful API

目录: RESTful 是什么 JSON-server (提供 RESTful API 接口 + JSON 返回数据) 如何选择 REST 方法 HTTP verbs / method (安全 | 幂等) HTTP POST V.S. PUT REST POST | PUT | PATCH RESTful 是什么 阮一峰:理解RESTful架构 Representational State Transfer 表征状态转移 核心:resource.representation 指的是 resour

RestFul Api 定义流程规范

(1)整理项目需求,编写Api需求文档,包括Api返回结果,查询参数等等. (2)定义RestFul Api接口. (3)测试RestFul Api接口. (4)编写Api说明文档,包括Api的名称,路径,Http方法,请求参数,功能模板,返回结果等等,方便各模块研发人员和测试人员使用. (5)测试人员测试Api,主要测试系统性能,还有一些特出场景测试,例如多线程,并发操作.编写Api测试报告 (6)Api接口调用,项目研发阶段. 备注:上述5和6可以同时进行,互不影响.主要产生三个Api文档:

学习RESTful API

总是见到文章有提到RESTful API的,却不知道是什么东西,找到这篇文章,觉得讲得不错,就转载到这里来吧. 另外也有一篇文章也不错,发个链接:白话REST-识别真假REST ---------------------- 前几日,有一小哥突然问我:陈陈,你会RESTful API吗?我说:不会呀,他说:那我教你好了.然后我就把该小哥拉入"黑名单"了,理由是唱你妹的小星星.然后去深入的学习了一下REST相关的东西. RESTful API对我并不是一个全新的像是突然蹦出来的词汇,我印象

网上整理的对于Rest和Restful api的理解

一.什么是Rest? REST不是"rest"这个单词,而是几个单词缩写 -- REpresentational State Transfer 直接翻译:表现层状态转移,但这个翻译正常人根本看不懂,找到的一种最好理解的说法是,URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作. 二.Restful api接口有什么特征? REST描述的是在网络中client和server的一种交互形式:REST本身不实用,实用的是如何设计 RESTful API(RES

SpringBoot + Swagger2 自动生成API接口文档

spring-boot作为当前最为流行的Java web开发脚手架,相信越来越多的开发者会使用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于移动端.在实际开发过程中,这些接口还要提供给开发测试进行相关的白盒测试,那么势必存在如何在多人协作中共享和及时更新API开发接口文档的问题. 假如你已经对传统的wiki文档共享方式所带来的弊端深恶痛绝,那么尝试一下Swagger2 方式,一定会让你有不一样的开发体验: 功能丰富 :支持多种注解,自动生成接

Restful风格API接口开发springMVC篇

Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. 在Restful风格中,用户请求的url使用同一个url而用请求方式:get,post,delete,put...等方式对请求的处理方法进行区分,这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口. 在Restful风格中,现