RESTful Api设计风格

协议:API 与用户的通信协议,总是使用 HTTPS 协议

域名:应该尽量将 API 部署在专用域名之下,如果确定 API 很简单,不会有进一步的扩展,可以考虑放在主域名之下。

版本

应该将 API 的版本放在 URL 中:https://www.sunck.wang/api/v1.0
将版本号放在 HTTP 头信息中:https://www.sunck.wang/students
路径:表示 API 的具体网址,每个网址代表一种资源,所以网址中不能有动词,只能有名词,并且所用的名词往往与数据库的表名对应。数据库中的表示记录同种数据的集合,所以 API 中的名词也应该使用复数。

获取所有学生:

https://www.sunck.wang/api/v1... 错误写法
https://www.sunck.wang/api/v1... 正确写法

使用正确的 HTTP 请求方法

例子

过滤信息

如果资源数较多,服务器不能将所有数据一次全部返回给客户端,API 应该提供参数,过滤返回结果

例子

注意:参数的设计允许存在冗余,即允许 API 路径和 URL 参数偶尔有重复

状态码

服务器向客户端返回的状态码和提示信息

错误处理

如果错误码是4xx,就应该向用户返回错误信息,一般来说,返回的信息中将 error 作为键名,出错的信息作为键值即可

{
    error:'Invalid API KEY',
}

响应结果

针对不同的操作,服务器向用户返回结果应该符合规范

使用链接相关的资源

返回结果中提供了链接,链向了其他的 API 方法,使得用户不查看文档,也知道下一步应该做什么

示例

{
    link:"www.sunck.wang/grades/"
}
{
    "link":{
        "rel":"collection www.sunck.wang/index/",
        "href":"www.sunck.wang/grades/",
        "title":"List of Grades",
        "type":"application/json",
    }
}

rel:表示这个 API 与当前网址的关系

href:表示 API 路径

title:表示 API 的标题

type:表示返回的类型

其他:服务器返回的数据尽量使用 JSON 格式,避免使用 XML 格式

API 文档规范要求

一、 写明该接口的功能是什么

二、 请求的 URL 是什么

三、 请求方式是什么(POST、GET、 DELETE、PUT、 PATCH等)

四、 参数是什么,此处还需说明你的参数名、参数类型、是否必填、参数的简单解释

五、 请求成功时的响应内容(实际开发中,要与前端同事沟通使用什么样的数据结构),并且对其中的字段做出说明(包括含义、数据类型,数据结构<字符串,数组,字典等>)

六、 请求失败时的响应内容,并且对其中的字段做出说明(包括含义、数据类型,数据结构<字符串,数组,字典等>)包括单独的对错误码的说明

七、 请求样例(返回结果部分要包括成功的情况和失败的情况)

八、 最好写上文档的编写人和编写时间(可不写)

Demo:

  • 功能:获取某人的下属

  • URL:”people/api/v1/ subordinate”

请求参数说明:

请求成功参数说明

data 内的响应参数说明

请求失败参数说明


code值说明

Code 说明
1 成功
2 该人已经离职
3 请求参数不完整
4 参数类型错误
样例:

请求参数 uid 1

# 请求成功样例
{
    ,
    'msg': 'ok',
    'data':[
        {
        ,
        'name': 'Tom',
        'position': '教师'
        },
        {
        ,
        'name’: 'Lucy',
        'position': '助教'
        }
    ]
}

# 请求失败样例
    {
        ,
        'msg': '该人已离职'
}

作者:rottengeek
原文链接:http://t.cn/RgC0MIP

第 19 期Python实战班正在火热招生中
第 8 期自动化运维班正在招生中
第4 期 golang 正在招生中

详情扫码咨询

免费视频 戳戳戳!

Django—— restful 设计风格的更多相关文章

  1. Django RESTful Web Services, 此书学DRF不错

    全名为<Django RESTful Web Services: The easiest way to build Python RESTful APIs and web services wi ...

  2. 在django restful framework中设置django model的property

    众所周知,在django的model中,可以某些字段设置@property和setter deleter getter,这样就可以在存入数据的时候进行一些操作,具体原理请参见廖雪峰大神的博客https ...

  3. 4- vue django restful framework 打造生鲜超市 -restful api 与前端源码介绍

    4- vue django restful framework 打造生鲜超市 -restful api 与前端源码介绍 天涯明月笙 关注 2018.02.20 19:23* 字数 762 阅读 135 ...

  4. 3- vue django restful framework 打造生鲜超市 - model设计和资源导入

    3- vue django restful framework 打造生鲜超市 - model设计和资源导入 使用Python3.6与Django2.0.2(Django-rest-framework) ...

  5. django restful framework 一对多方向更新数据库

    目录 django restful framework 序列化 一 . 数据模型: models 二. 序列化: serializers 三, 视图: views 四, 路由: urls 五. 测试 ...

  6. $Django RESTful规范

    一 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度 ...

  7. Django restful

    1.restful api的规范 API与用户的通信协议,总是使用HTTPs协议. 域名  https://api.example.com                         尽量将API ...

  8. RESTFUL 设计风格

    RESTFUL  规范总结: Rest是web服务的一种架构风格;使用HTTP,URI,XML,JSON,HTML等广泛流行的标准和协议;轻量级,跨平台,跨语言的架构设计;它是一种设计风格,不是一种标 ...

  9. 7- vue django restful framework 打造生鲜超市 -商品类别数据展示(上)

    Vue+Django REST framework实战 搭建一个前后端分离的生鲜超市网站 Django rtf 完成 商品列表页 并没有将列表页的数据json 与前端的页面展示结合起来 讲解如果将dr ...

随机推荐

  1. Linux 系统的/var目录

    /var目录主要针对常态性变动的文件,包括缓存(cache).登录档(log file)以及某些软件运作所产生的文件 /var目录下的重要目录 目录 应放置文件内容 /var/cache/ 应用程序本 ...

  2. Linux uname命令详解

    uname常见命令参数 -a, --all print all information, in the following order, except omit -p and -i if unknow ...

  3. php 开源项目汇总

    WordPress是最热门的开源个人信息发布系统(Blog)之一,基于PHP+MySQL构建.WordPress提供的功能包括:1.文章发布.分类.归档. 2.提供文章.评论.分类等多种形式的RSS聚 ...

  4. 第二次作业——App案例分析

    第一部分 调研, 评测 下载软件并使用起来,描述最简单直观的个人第一次上手体验. 我选择的应用是chrome浏览器.之所以选择分析它,是因为我用的时间较长,对功能比较熟悉. chrome浏览器提供了应 ...

  5. 第2次作业——APP的案例分析

    APP的案例分析 网易有道词典APP,使用这个软件有三年之久.唯独最爱的一点就是我每天都能听到不一样的英文歌看到创作歌手的来历,当然偶尔也会有其他国家的歌.起初使用这个软件的目的是用来查单词,每天积累 ...

  6. 你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧

    最近Jerry在忙一个项目,技术栈换成了nodejs平台,语言换成了JavaScript,因为赶项目进度,一直没时间更新公众号.感谢大家的支持,关注人数还是慢慢地增长到了3000. 今天我们来聊聊一个 ...

  7. 启动64位 IIS 32位应用程序的支持

    64位的系统可以让IIS在32位的环境下运行asp.net程序,设置方法如下: ASP.NET程序在编译的时候默认是Any CPU,即编译的程序可以在X86.X64系统平台上运行.若希望我们的ASP. ...

  8. dotnet core入门

    dotnet 命令 C:\Users\yshuangj\Desktop\dotnet>dotnet Usage: dotnet [options]Usage: dotnet [path-to-a ...

  9. 20145203Java实验报告四:Android开发基础

    Java实验报告四:Android开发基础 实验要求: 1.安装Android Studio 2.运行安卓AVD模拟器 3.使用安卓运行出虚拟手机并显示HelloWorld以及自己的学号 实验过程 ( ...

  10. virtualbox+vagrant学习-2(command cli)-2-vagrant cloud命令--有问题

    Cloud https://www.vagrantup.com/docs/cli/cloud.html 命令: vagrant cloud 这是用来管理与vagrant相关的任何东西的命令. 该命令的 ...