zoukankan      html  css  js  c++  java
  • 什么是REST接口

    维基定义:

    REST,Representational State Transfer (REST) is a software architecture style consisting of guidelines and best practices for creating scalable web services. REST is a coordinated set of constraints applied to the design of components in a distributed hypermedia system that can lead to a more performant and maintainable architecture.

    从上面的定义中,可以发现REST其实是一种组织Web服务的架构,而并不是实现Web服务的一种新的技术,更没有要求一定要使用HTTP。其目标是为了创建具有良好扩展性的分布式系统。

    接口就是用URL定位资源,用HTTP动词(GET,POST,DELETE,PUT)描述操作。前后台通信方式,表现层状态转移。特别是基于HTTP的REST服务。

    REST示例

    简单的基于HTTP的REST服务示例

    假设用户正在访问一个电子商务网站www.jd..com。该网站对其所销售的各个物品进行了详细分类。当用户登录该网站进行购物时,首先需要在该网站上选择其所需要寻找物品的分类,进而列出属于该分类的各个物品。

     

      当然,虽然从业务逻辑的角度来说这个流程非常简单,但实际上浏览器向后台发送了多个请求:页面逻辑在页面加载时将首先得到所有的商品分类,并将这些分类显示在了页面中。在用户选择了一个分类的时候,页面逻辑将发送一个请求得到该分类的详细信息,并发送另外一个请求来得到该分类的商品列表:

     

    REST系统所需要具有的HATEOAS(Hypermedia As The Engine Of Application State)特性。REST在系统设计上的视角将不再把流程放在了最优先的位置。

    在设计web接口的时候,REST主要是用于定义接口名,接口名一般是用名词写,不用动词,那怎么表达“获取”或者“删除”或者“更新”这样的操作呢——用请求类型来区分。

    比如,有一个friends接口,对于“朋友”有增删改查四种操作,怎么定义REST接口?

    增加一个朋友,uri: generalcode.cn/v1/friends 接口类型:POST

    删除一个朋友,uri: generalcode.cn/va/friends 接口类型:DELETE

    修改一个朋友,uri: generalcode.cn/va/friends 接口类型:PUT

    查找朋友,uri: generalcode.cn/va/friends 接口类型:GET

    上面定义的四个接口就是符合REST协议的,请注意,这几个接口都没有动词,只有名词friends,都是通过Http请求的接口类型来判断是什么业务操作。

    举个反例:generalcode.cn/va/deleteFriends 该接口用来表示删除朋友,这就是不符合REST协议的接口。

    一般接口的返回值是JSON或者XML类型的。

    用HTTP Status Code传递Server的状态信息。比如最常用的 200 表示成功,500 表示Server内部错误,403表示Bad Request等。(反例:传统web开发返回的状态码一律都是200)

    那这种风格的接口有什么好处呢?前后端分离。前端拿到数据只负责展示和渲染,不对数据做任何处理。后端处理数据并以JSON格式传输出去,定义这样一套统一的接口,在web,ios,android三端都可以用相同的接口。

  • 相关阅读:
    java开发常见单词(复习整理)
    论文免费查重
    IntelliJ Idea 常用快捷键列表
    Linux命令大全
    Springboot如何上传图片文件
    Springboot JPA如何做条件查询
    Springboot使用单元测试(JUnit Test)
    Springboot使用Mybatis实现完整的增删改查(CRUD)和分页
    Springboot使用JPA实现完整的增删改查(CRUD)和分页
    Springboot-mybatis使用xml方式
  • 原文地址:https://www.cnblogs.com/Tanwheey/p/13885837.html
Copyright © 2011-2022 走看看