zoukankan      html  css  js  c++  java
  • 网上整理的对于Rest和Restful api的理解

    转载:https://www.cnblogs.com/shamo89/p/8097882.html

    一、什么是Rest?

    REST不是"rest"这个单词,而是几个单词缩写 -- REpresentational State Transfer 直接翻译:表现层状态转移,但这个翻译正常人根本看不懂,找到的一种最好理解的说法是,URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

    二、Restful api接口有什么特征?

    REST描述的是在网络中client和server的一种交互形式;REST本身不实用,实用的是如何设计 RESTful API(REST风格的网络接口)。

    1.URL的根路径

    http://api.chesxs.com/v1

    2.需要有api版本信息

    http://api.chesxs.com/v1

    3.URL中只使用名词指定资源,不用动词,且推荐使用复数

    服务(Server)提供的RESTful API中,URL中只使用名词来指定资源,原则上不使用动词。“资源”是REST架构或者说整个网络处理的核心。比如:

    http://api.chesxs.com/v1/cars // 获取某个账户下的车辆列表
    http://api.chesxs.com/v1/fences // 获取某个账户下的围栏列表

    4. 用HTTP协议里的动词来实现资源的添加,修改,删除等操作。即通过HTTP动词来实现资源的状态扭转

    复制代码
    GET 用来获取资源,
    POST 用来新建资源(也可以用于更新资源)。比如:POST http://api.chesxs.com/v1/car: 添加车辆
    PUT 用来更新资源,
    DELETE 用来删除资源。比如:DELETE http://api.chesxs.com/v1/cars 删除某辆车 (在http parameter指定好友id) 
    UPDATE http://api.chesxs.com/v1/fence 更新围栏信息

    错误使用: GET http://api.chesxs.com/v1/deleteCar 删除车辆
    复制代码

    5.GET应该是安全的,不会改变资源状态

     这个应该很好理解,get的时候就只是获取资源,而不涉及添加、更新、删除资源。

    6.使用正确的HTTP Status Code返回状态码

    常用的有404,200,500,400等等。

    7.过滤信息

    如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。

    下面是一些常见的参数。

    ?limit=10:指定返回记录的数量
    ?offset=10:指定返回记录的开始位置。
    ?page=2&per_page=100:指定第几页,以及每页的记录数。
    ?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
    ?producy_type=1:指定筛选条件

    8.规范返回的数据

    为了保障前后端的数据交互的顺畅,建议规范数据的返回,并采用固定的数据格式封装。

    接口返回模板:

    复制代码
    {
        status:0,
    
        data:{}||[],
    
        msg:’’
    }
    复制代码

    总结,看一个标准的restful api要可以做到

    看Url就知道要操作的资源是什么,是操作车辆还是围栏
    看Http Method就知道操作动作是什么,是添加(post)还是删除(delete)
    看Http Status Code就知道操作结果如何,是成功(200)还是内部错误(500)

     参考文章:https://www.cnblogs.com/bndong/p/6139598.html

  • 相关阅读:
    how to uninstall devkit
    asp.net中bin目录下的 dll.refresh文件
    查找2个分支的共同父节点
    Three ways to do WCF instance management
    WCF Concurrency (Single, Multiple, and Reentrant) and Throttling
    检查string是否为double
    How to hide TabPage from TabControl
    获取当前系统中的时区
    git svn cygwin_exception
    lodoop打印控制具体解释
  • 原文地址:https://www.cnblogs.com/mybatis/p/9395688.html
Copyright © 2011-2022 走看看