Restful API 接口设计规范

引言:

##  Restful API是根据REST架构原则设计的接口规范,由这个接口规范倡导的命名规范以及请求规范。


涉及知识点:

REST架构

 

  • 由  ↓   创立:

  • “一切皆资源”为前提:资源可以是一个图片、音乐、一个XML格式、HTML格式或者JSON格式等网络上的一个实体,除了一些二进制的资源外普通的文本资源更多以JSON为载体、面向用户的一组数据(通常从数据库中查询而得到)

  • 统一接口: 对资源的操作包括获取、创建、修改和删除,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。换言而知,使用RESTful风格的接口但从接口上你可能只能定位其资源,但是无法知晓它具体进行了什么操作,需要具体了解其发生了什么操作动作要从其HTTP请求方法类型上进行判断 。

1. 概念

Restful APIRESTful是目前最流行的接口设计规范,基于HTTP请求开发;

官网地址:Reqres - A hosted REST-API ready to respond to your AJAX requestsA hosted REST-API ready to respond to your AJAX requestshttps://reqres.in/

2. request url规范

/api/资源?id=请求参数

***解释:

一般代表资源都是以复数的形式出现,但也有例外,如果是表示一些动作如登录、注册则不需要写成复数

3.  restful api 实例

   

RequestResponse
请求方式注释 (en)请求url请求参数注释 (zh)返回状态;返回数据
GETLIST USERS/api/users?page=2获取用户列表200
{
    "page": 2,
    "per_page": 6,
    "total": 12,
    "total_pages": 2,
    "data": [
        {
            "id": 7,
            "email": "michael.lawson@reqres.in",
            "first_name": "Michael",
            "last_name": "Lawson",
            "avatar": "https://reqres.in/img/faces/7-image.jpg"
        },
        {
            "id": 8,
            "email": "lindsay.ferguson@reqres.in",
            "first_name": "Lindsay",
            "last_name": "Ferguson",
            "avatar": "https://reqres.in/img/faces/8-image.jpg"
        },
        {
            "id": 9,
            "email": "tobias.funke@reqres.in",
            "first_name": "Tobias",
            "last_name": "Funke",
            "avatar": "https://reqres.in/img/faces/9-image.jpg"
        },
        {
            "id": 10,
            "email": "byron.fields@reqres.in",
            "first_name": "Byron",
            "last_name": "Fields",
            "avatar": "https://reqres.in/img/faces/10-image.jpg"
        },
        {
            "id": 11,
            "email": "george.edwards@reqres.in",
            "first_name": "George",
            "last_name": "Edwards",
            "avatar": "https://reqres.in/img/faces/11-image.jpg"
        },
        {
            "id": 12,
            "email": "rachel.howell@reqres.in",
            "first_name": "Rachel",
            "last_name": "Howell",
            "avatar": "https://reqres.in/img/faces/12-image.jpg"
        }
    ],
    "support": {
        "url": "Reqres - A hosted REST-API ready to respond to your AJAX requests",
        "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
    }
}
GETSINGLE USER/api/users/2获取用户详情200
{
    "data": {
        "id": 2,
        "email": "janet.weaver@reqres.in",
        "first_name": "Janet",
        "last_name": "Weaver",
        "avatar": "https://reqres.in/img/faces/2-image.jpg"
    },
    "support": {
        "url": "Reqres - A hosted REST-API ready to respond to your AJAX requests",
        "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
    }
}
GET SINGLE USER NOT FOUND/api/users/23用户不存在404
{}
GETLIST <RESOURCE>/api/unknown200
{
    "page": 1,
    "per_page": 6,
    "total": 12,
    "total_pages": 2,
    "data": [
        {
            "id": 1,
            "name": "cerulean",
            "year": 2000,
            "color": "#98B2D1",
            "pantone_value": "15-4020"
        },
        {
            "id": 2,
            "name": "fuchsia rose",
            "year": 2001,
            "color": "#C74375",
            "pantone_value": "17-2031"
        },
        {
            "id": 3,
            "name": "true red",
            "year": 2002,
            "color": "#BF1932",
            "pantone_value": "19-1664"
        },
        {
            "id": 4,
            "name": "aqua sky",
            "year": 2003,
            "color": "#7BC4C4",
            "pantone_value": "14-4811"
        },
        {
            "id": 5,
            "name": "tigerlily",
            "year": 2004,
            "color": "#E2583E",
            "pantone_value": "17-1456"
        },
        {
            "id": 6,
            "name": "blue turquoise",
            "year": 2005,
            "color": "#53B0AE",
            "pantone_value": "15-5217"
        }
    ],
    "support": {
        "url": "Reqres - A hosted REST-API ready to respond to your AJAX requests",
        "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
    }
}
GETSINGLE <RESOURCE>api/unknown/2200
{
    "data": {
        "id": 2,
        "name": "fuchsia rose",
        "year": 2001,
        "color": "#C74375",
        "pantone_value": "17-2031"
    },
    "support": {
        "url": "Reqres - A hosted REST-API ready to respond to your AJAX requests",
        "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
    }
}
GETSINGLE <RESOURCE> NOT FOUND
/api/unknown/23
404{}
POSTCREATE
/api/users
{
    "name": "morpheus",
    "job": "leader"
}
创建用户201
{
    "name": "morpheus",
    "job": "leader",
    "id": "473",
    "createdAt": "2022-11-01T07:35:54.844Z"
}
PUTUPDATE/api/users/2
{
    "name": "morpheus",
    "job": "zion resident"
}
修改用户200
{
    "name": "morpheus",
    "job": "zion resident",
    "updatedAt": "2022-11-01T07:38:34.189Z"
}
PATCHUPDATE/api/users/2
{
    "name": "morpheus",
    "job": "zion resident"
}
修改用户200
{
    "name": "morpheus",
    "job": "zion resident",
    "updatedAt": "2022-11-01T07:40:25.996Z"
}
DELETEDELETE/api/users/2删除用户204
POSTREGISTER - SUCCESSFUL/api/register
{
    "email": "eve.holt@reqres.in",
    "password": "pistol"
}
注册用户成功200
{
    "id": 4,
    "token": "QpwL5tke4Pnpja7X4"
}
POSTREGISTER - UNSUCCESSFUL/api/register
{
    "email": "sydney@fife"
}
注册用户失败400
{
    "error": "Missing password"
}
POSTLOGIN - SUCCESSFUL/api/login
{
    "email": "eve.holt@reqres.in",
    "password": "cityslicka"
}
用户登录成功200
{
    "token": "QpwL5tke4Pnpja7X4"
}
POSTLOGIN - UNSUCCESSFUL/api/login
{
    "email": "peter@klaven"
}
用户登录失败400
{
    "error": "Missing password"
}
GETDELAYED RESPONSE/api/users?delay=3200
{
    "page": 1,
    "per_page": 6,
    "total": 12,
    "total_pages": 2,
    "data": [
        {
            "id": 1,
            "email": "george.bluth@reqres.in",
            "first_name": "George",
            "last_name": "Bluth",
            "avatar": "https://reqres.in/img/faces/1-image.jpg"
        },
        {
            "id": 2,
            "email": "janet.weaver@reqres.in",
            "first_name": "Janet",
            "last_name": "Weaver",
            "avatar": "https://reqres.in/img/faces/2-image.jpg"
        },
        {
            "id": 3,
            "email": "emma.wong@reqres.in",
            "first_name": "Emma",
            "last_name": "Wong",
            "avatar": "https://reqres.in/img/faces/3-image.jpg"
        },
        {
            "id": 4,
            "email": "eve.holt@reqres.in",
            "first_name": "Eve",
            "last_name": "Holt",
            "avatar": "https://reqres.in/img/faces/4-image.jpg"
        },
        {
            "id": 5,
            "email": "charles.morris@reqres.in",
            "first_name": "Charles",
            "last_name": "Morris",
            "avatar": "https://reqres.in/img/faces/5-image.jpg"
        },
        {
            "id": 6,
            "email": "tracey.ramos@reqres.in",
            "first_name": "Tracey",
            "last_name": "Ramos",
            "avatar": "https://reqres.in/img/faces/6-image.jpg"
        }
    ],
    "support": {
        "url": "Reqres - A hosted REST-API ready to respond to your AJAX requests",
        "text": "To keep ReqRes free, contributions towards server costs are appreciated!"
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值