json api - QLGQ/learning-python GitHub Wiki

Introductions

Json Api是客户端的请求与服务器端的响应协议的规范说明书,它适用于那些内容类型使用了application/vnd.api+json来交换数据的引用。

规范

针对服务器端对数据表进行的增删改查操作介绍一下客户端发送的对应这四种操作的request规范以及服务器端对应的respond规范。

增加操作(CREATE)

客户端使用POST请求来处理create操作,协议基本内容为:
Request POST http://hostname/api/wifis

{
 "data":{
   "relationships":{},
   "attributes":{
     "mac":"0C:82:68:10:03:5E",
     "ssid":"yiwangwuji"
    },
   "type":"wifi",
   "id":"",
   "links":{
      "self":"http://hostname/api/wifis"
    }
   }
}

data和type是必需的,data中包含了请求中的一些数据,服务器收集这些数据来做出相应的操作,type则是该请求的类型,一般和api接口数据类型一致。
服务器的响应如果成功的话会返回标识码 200 OK,然后返回增加的对象以及它对应的id号。
200 OK

{
 "data":{
   "relationships":{},
   "attributes":{
     "mac":"0C:82:68:10:03:5E",
     "ssid":"yiwangwuji"
    },
 "type":"wifis",
 "id":"1",
 "links":{
   "self":"http://hostname/api/wifis/<id>"
   }
 }
}

删除操作(DELETE)

删除对应着客户端的DELETE请求,该请求没有body,其格式为:
Request DELETE http://hostname/api/wifis/1
1对应着数据库中某个数据的唯一id标志,它是通过上面的增加操作的POST请求返回的响应得到的。
对应的删除成功的响应为:
Response Status: 200 OK

{
  "data": {
    "relationships": {},
    "attributes": {
      "content": "delete the wifi successfully"
    },
    "type": "wifis",
    "id": "",
    "links": {
      "self": "http://hostname/api/wifis/<id>"
    }
  }
}

修改操作(UPDATE)

修改操作也需要有body,且body同样至少要有type与id(id可以放在url中),使用PATCH请求 。
Request PATCH http://hostname/api/wifis/1

{
 "data":{
   "relationships":{},
   "attributes":{
     "ssid":"new_yiwangwuji"
    },
   "type":"wifi",
   "id":"",
   "links":{
      "self":"http://hostname/api/wifis"
    }
   }
}

和删除一样,此处的id为1,对应着数据库中某个数据的唯一id标志,通过上面的增加操作的POST请求返回的响应得到 。
对应的响应为:
Response Status: 200 OK

{
 "data":{
   "relationships":{},
   "attributes":{
        "content":"update the ssid successfully"
    },
 "type":"wifis",
 "id":"",
 "links":{
   "self":"http://hostname/api/wifis/<id>"
   }
 }
}

查找操作(RETRIEVE)

查找操作对应客户端的GET请求,无需body,其格式为:
Request GET http://hostname/api/wifis
服务器端的响应格式为:
Response Status: 200 OK

{
  "data": {
    "relationships": {},
    "attributes": [
      {
        "mac": "0C:82:68:10:03:5E",
        "ssid": "new_yiwangwuji",
        "id": 1
      }
    ],
    "type": "wifis",
    "id": "",
    "links": {
      "self": "http://hostname/api/wifis/<id>"
    }
  }
}

返回的是一个列表

Reference

Json Api基础