php Restful设计

php Restful设计

1、restful是基于资源的,面向资源架构风格(一个链接,一张图、一个文本等等)
2、restful的http协议
    2.1 url:
        2.1.1 port 服务端口,默认为80
        2.1.2 path 访问资源的路径
        2.1.3 query-string  发送给http服务器的数据
        2.1.4 anchor 锚

    2.2 请求 组成格式:请求行、消息报头、请求正文
             请求行格式: Method Request-URI HTTP-Version CRLF
                          例子: GET / HTTP/1.1 CRLF

    2.3请求方法
            GET :请求获取Request-URI的所表示的资源
            POST :在Request-URI所标识的资源后附加新的数据
            HEAD :请求获取由Request-URI所标识的资源的相应消息包头
            PUT : 请求服务器存储一个资源,并用Request-URI作为其标识
            DELETE :请求服务器删除Request-URI所表示的资源
            OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项请求

    2.4 响应  组成格式:状态行、消息报头、响应正文
            状态行格式 : HTTP-Version Status-Code Reason-PhRase CRLF
                    例子:HTTP/1.1 200 OK

    2.5 常用状态码
        200 ok  //客户端请求成功
        400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
        401 Unauthorized  //服务器收到请求,但是拒绝提供服务,需要授权访问
        404 Not Found  //请求资源不存在
        500 Internal Server Error  //服务器发生不可预期的错误
        503 Server Unavailable  //服务器当前不能处理客户端请求,一般服务器达到性能瓶颈拒绝服务

3、如何设计RESTful API

    3.1 资源路径(URI)
        概念:在RESTful架构中,每个网址代表一种资源,所以网址中不能有动词,只能用名词。一般来说API中的名词应该使用复数
        举例:有一个API提供动物园(zoo)的信息,还包括各种动物和雇员的信息,则它的路径应该设计成下面这样
                https://api.example.com/v1/zoos   //动物园资源
                https://api.example.com/v1/animals/2   //动物园资源

    3.2 HTTP动词
        概念:对于资源的操作(CURD),由HTTP动词表示
        GET:从服务器获取资源(一项或多项)
        POST:在服务器新建一个资源
        PUT:在服务器更新资源(客户端提供改变后的完整资源)
        PATCH:在服务器更新资源(客户端提供改变的属性)【注意】:这个不常用,更新一般都用PUT,用PUT更新会返回所有字段,而用PATCH更新只会返回更新的字段
        DELETE:从服务器删除一个数据

        举例:
            POST /zoos:新建一个动物园
            GET /zoos/ID:获取某个指定动物园的信息
            PUT /zoos/ID:更新某个指定动物园的信息
            DELETE /zoos/ID:删除某个动物园


    3.3 过滤信息
        概念:如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果
        举例:
            ?offset=10:制定返回记录的开始位置
            ?page=2&per_page=100:制定第几页,以及每页的记录数
            ?sortby=name&order=asc:制定返回结果排序,以及排序顺序
            ?animal_type_id=1:制定筛选条件

    3.4 状态码
        200 ok 服务器成功返回用户请求的数据,该操作是幂等的
        201 CREATED 新建或修改数据成功
        204 NO CONTNET 删除数据成功
        400 BAD REQUEST 用户发出的请求有错误,该操作是幂等
        401 Unauthorized 表示拥护没有认证,无法进行当前操作
        403 Forbidden 表示拥护访问时被禁止的
        422 Unprocesable Entity 当创建一个对象时,发生一个验证错误
        500 INTERNAL SERVER ERROR 服务器发生错误,用户将无法判断发出的请求是否成功

    3.5 错误处理
        概念:如果状态码是4xx或者5xx,就应该像用户返回错误信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可
        {
            'error' : '参数错误'
        }

    3.6 返回结果
        针对不同操作,服务器向用户返回的结果应该符合以下规范:
            GET /collections:返回资源对象的列表(数组)
            GET /collections/identity:返回单个资源对象
            POST /collections:返回新生成的资源对象
            PUT /collections/identity:返回完整的资源对象
            PATCH /collections/identity :返回被修改的属性
            DELETE /collections/identity : 返回一个空文档


4、google商店搜索restful api client找到 Restlet Client-REST API Testing,安装调试restful工具


5、项目实例

    项目需求:用户登陆、注册
              文章发表、编辑、管理、列表
    分析资源:用户(user) 、文章(article)
    资源路径:/user 、 /article
    HTTP动词:POST、GET、PUT、DELETE
    过滤信息:文章分页筛选
    状态码:200、404、422、403
    错误处理:输出json格式错误信息
    返回结果:输出json数组或者json对象

 https://blog.csdn.net/jj546630576/article/details/77948445

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113194.html原文链接:https://javaforall.net

(0)
上一篇 2021年10月22日 下午8:00
下一篇 2021年10月22日 下午8:00


相关推荐

  • 神经网络实现手写数字识别(MNIST)[通俗易懂]

    神经网络实现手写数字识别(MNIST)[通俗易懂]一、缘起原本想沿着传统递归算法实现迷宫游戏——>遗传算法实现迷宫游戏——>神经网络实现迷宫游戏的思路,在本篇当中也写如何使用神经网络实现迷宫的,但是研究了一下,感觉有些麻烦不太好弄,所以就选择了比较常见的方式,实现手写数字识别(所谓的MNIST)。二、人工神经网络简介从小至蚂蚁(没有查到具体数目,有的说蚂蚁大脑有25万个神经细胞,也有说是50万个),大至大象…

    2025年11月16日
    7
  • 智谱发布新一代基座模型GLM-4.5:开源、高效、低价,专为智能体而生

    智谱发布新一代基座模型GLM-4.5:开源、高效、低价,专为智能体而生

    2026年3月12日
    2
  • 16进制浮点数的表示方法

    16进制浮点数的表示方法16进制浮点数的表示方法,根据IEEE的标准,分为32位和64位两种,参数分别如下:             符号位     指数位           尾数位           指数偏移量 32位    1[31]    8[23-30]        23[0-22]          127  64位    1[63]    11[52-62]   

    2022年6月22日
    173
  • C# 发送Http请求 – WebClient类

    WebClient位于System.Net命名空间下,通过这个类可以方便的创建Http请求并获取返回内容。一、用法1- DownloadData二、用法2- OpenRea

    2021年12月27日
    63
  • navicate 15激活码_在线激活

    (navicate 15激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
    177
  • 开源中国上几款免费又好用的OA协同办公系统,真心不错!

    开源中国上几款免费又好用的OA协同办公系统,真心不错!随着企业内部信息化管理的重要程度越来越高 我国 OA 协同办公产品近年来得以快速发展 其中开源办公产品因为其开源免费的特性受到众多中小企业的喜爱 下面就来说一说那些开源协同产品中的优秀代表们 NO 1 然之协同 PHP 开发语言 然之协同以 ZPL 协议开源发行 采用 PHP MYSQL 语言开发 功能模块 然之协同由客户管理 CRM 日常办公 财务记账 文档管理 项目管理 团队分

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号