restfull api
REST 表示状态传输。这是一个体系结构样式,可用于设计网络服务,可以被各种客户端消耗。核心思想是,不使用如CORBA,RPC或SOAP复杂的机制在机器之间进行连接,简单的 HTTP 用于使它们之间调用。
- 创建资源:应该使用 HTTP POST
- 要获取资源:应该使用HTTP GET
- 更新资源:应使用HTTP PUT
- 要删除资源:应使用HTTP DELETE
通常Rest 是基于Web服务返回JSON或XML数据格式作为响应,虽然它并不仅仅限于这些类型。客户端可以指定(使用 HTTP Accept 报头),他们所感兴趣的资源类型,并且服务器可以返回资源,指定它所服务的内容类型资源。
下面是一个可能基于 REST 的控制器,实现REST API。这里所说的“可能”,这意味着可以以另一种方式实现它,还是(或者更纯粹的方式)符合REST风格。
- GET 请求 /api/user/ 返回用户的列表
- GET 请求 /api/user/1 返回ID为1的用户
- POST 请求 /api/user/ 以用户对象的JSON格式创建新的用户
- PUT 请求 /api/user/3 以用户对象作为JSON更新ID为3的用户
- DELETE 请求 /api/user/4 删除ID为4的用户
- DELETE 请求 /api/user/ 删除所有的用
@RestController : 首先,我们使用 Spring4 的新 @RestController 注释。 它的注解消除了注释每个以@ResponseBody的方法。@RestController本身注解为@ResponseBody,并且可以被视为@Controller和@ResponseBody的组合。
@RequestBody : 如果一个方法的参数都注解有@RequestBody,Spring将绑定传入的 HTTP 请求体(在@RequestMapping提到该法的URL)到这个参数。这样做 Spring 将[在后台]使用HTTP消息转换为HTTP请求主体转换成域对象[反序列化要求主体域对象]的基础上,接受或Content-Type头请求。
@ResponseBody :如果一个方法被注解为@ResponseBody,Spring将绑定返回值传出的 HTTP 响应体。这样做Spring将[在后台]使用HTTP消息转换器的返回值转换为HTTP响应体[序列化对象响应正文],根据内容类型出现在请求的HTTP头。 前面已经提到,在 Spring4 可能会停止使用此注释。
ResponseEntity是一个真正处理。 它代表了整个HTTP响应。一件好事是你可以控制任何进入它东西。可以指定状态码,头和主体。它自带几个构造函数执行你想要的 HTTP 响应发送的信息。
@PathVariable 这种表示法表示方法参数应绑定到一个 URI 模板变量[“{}”]。
基本上,@RestController,@RequestBody,ResponseEntity&@PathVariable 都是用 Spring 4 实现 REST API 需要知道的。此外,Spring提供了一些支持类来帮助你实现一些定制。
MediaType : 通过@RequestMapping注解,你还可以,指定要生产或消费的 MediaType(使用生产或消费属性),通过特定的控制器的方法,以进一步缩小映射。
参考:http://www.yiibai.com/spring_mvc/spring-mvc-4-restful-web-services-crud-example-resttemplate.html
restfull api的更多相关文章
- 环信Restfull API dotnetSDK
Easemob.Restfull4Net 环信Restfull API dotnet的封装 支持的.Net Framework版本:4.0 API地址:http://docs.easemob.com/ ...
- php 使用 restler 框架构建 restfull api
php 使用 restler 框架构建 restfull api restler 轻量级,小巧,构建restfull api非常方便! 官网:http://restler3.luracast.com/ ...
- Restfull API 示例
什么是Restfull API Restfull API 从字面就可以知道,他是rest式的接口,所以就要先了解什么是rest rest 不是一个技术,也不是一个协议 rest 指的是一组架构约束条件 ...
- 使用Jax-rs 开发RESTfull API 入门
使用Jax-rs 开发RESTfull API 入门 本文使用 Jersey 2开发RESTfull API.Jersey 2 是 JAX-RS 接口的参考实现 使用到的工具 Eclipse Neon ...
- nova client和nova restfull api区别
1.nova client封装了获取认证 获取token等东西 2.nova client提供shell cli方式访问和import client 然后new client的方式访问 区别: 通过 ...
- 小白的springboot之路(十一)、构建后台RESTfull API
0.前言 开发系统中,前后端分离,后端一般返回RESTfull API,前端调用API构建UI,彼此分离.互相完全独立: 后台API中,我们一般返回结果码.提示信息.数据三部分内容,如图: 我们今天 ...
- restFull api接口
RestFull api接口 前后端分离开发的接口规范 什么是RestFull 是目录比较流行的api设计规范 注:restfull api规范应用场景,前后端分离的项目中 数据接口的现场 例如: / ...
- 48. spring boot单元测试restfull API【从零开始学Spring Boot】
回顾并详细说明一下在在之前章节中的中使用的@Controller.@RestController.@RequestMapping注解.如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建 ...
- restfull api交互常用状态码
2xx (成功类别) 200 Ok:标准的 HTTP 响应,表示 GET.PUT 或 POST 的处理成功. 201 Created:在创建新实例时,应返回此状态代码.例如,使用 POST 方法创建一 ...
随机推荐
- Java设计模式系列1--原型模式(Prototype Method)
2014-02-14 11:27:33 声明:本文不仅是本人自己的成果,有些东西取自网上各位大神的思想,虽不能一一列出,但在此一并感谢! 原型模式,从名字即可看出,该模式的思想就是将一个对象作为原型, ...
- 计算机网络(2)-----ARP协议
ARP协议(Address Resolution Protocol) 概念 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/I ...
- hive的Query和Insert,Group by,Aggregations(聚合)操作
1.Query (1)分区查询 在查询的过程中,采用那个分区来查询是通过系统自动的决定,但是必须是在分区列上基于where子查询. SELECT page_views.* FROM page_view ...
- css2----清除浮动
为什么要清除浮动? 非IE下,当容器的高度为auto,容器有浮动元素,此时容器的高度不能自己伸长适应内容的高度,造成内容溢出乃至影响布局,即所谓的“浮动溢出”,为防此象,需要清除浮动. 如何清除浮动? ...
- day11 堡垒机
项目实战:运维堡垒机开发 前景介绍 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒 ...
- php大力力 [042节] 今天做了一个删除功能
php大力力 [042节] 今天做了一个删除功能 if(isset($_GET['action'])){ if($_GET['action']=="del"){ $sql = &q ...
- C++中的复制构造函数
与C++中的构造函数相同,复制构造函数在对象生成过程中同样进行插入对应的Vtable虚表,但在成员变量赋值时,除具有复制构造函数的成员对象外,编译器合成复制构造函数其余均采用”Bitwise copy ...
- Flume 实战(2)--Flume-ng-sdk源码分析
具体参考: 官方用户手册和开发指南 http://flume.apache.org/FlumeDeveloperGuide.html *) 定位和简单例子 1). Flume-ng-sdk是用于编写往 ...
- 史上最详细Windows版本搭建安装React Native环境配置 转载,比官网的靠谱亲测可用
史上最详细Windows版本搭建安装React Native环境配置 2016/01/29 | React Native技术文章 | Sky丶清| 95条评论 | 33530 views ...
- 有100个节点的AVL树最大深度是多少?
首先说AVL树的概念 1 左右子树的深度差<=1 2 左右子树都是AVL树. 其实这样算,可以倒推的. 空树 DEPTH = 0; AVL_DEPTH = 2^0+2^1+......+2^k ...