xiaoyu/project/app/ipcweb/ipcweb-backend/doc/IPC_RESTful_API_Guide.md

139 lines
2.8 KiB
Markdown
Raw Permalink Normal View History

2025-03-04 22:36:42 +08:00
# IPC RESTful API Guide
---
## JSON Code Style
Follow [Google JSON Style Guide](https://google.github.io/styleguide/jsoncstyleguide.xml)
## Basic API Flow
Method Check : GET, POST
URI Check : api/v1/type?param=value&&key=token
API Version Match ?
Type Exists ?
Params Decode
Authentication ?
Header Check :
Common : Content-Type, Authentication
Auth ?
Expires ?
Content Type Valid ? Length ? (POST ONLY)
Parse Content (POST ONLY)
JSON Parse Success ?
API Version Match ?
data exists ? kind exists ?
Specific Handler by method && type && kind :
Parse item ? param ? (POST ONLY)
return item by param
## Authentication
### Login(Clear Text By Now)
> POST login?name=admin&&password=password
Request:
```txt
Content-Type: application/json
{
"password":"password",
"username":"admin"
}
```
Response:
```txt
HTTP/1.1 200 OK
Content-Type: application/json;charset-utf8
{
"success": true,
"message": "Authentication successful!",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNTM0OTMzNTY2LCJleHAiOjE1MzUwMTk5NjZ9.3xOdoxpK8hb42ykjMIl6rwLafB63Y-EQNOO9fFamp68",
"type": Bearer,
"expires": 3600
}
```
### Request with Token
> GET api/v1/network?type=wifi&&key=[YOUR ACCESS TOKEN]
Request Header:
```text
Vary: Origin, X-Origin
Content-Type: application/json;charset-utf8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.AbIJTDMFc7yUa5MhvcP03nJPyCPzZtQcGEp-zWfOkEEeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIiwiaWF0IjoxNTM0OTMzNTY2LCJleHAiOjE1MzUwMTk5NjZ9.3xOdoxpK8hb42ykjMIl6rwLafB63Y-EQNOO9fFamp68
{}
```
Response on success:
```text
Content-Type: application/json;charset-utf8
{
"apiVersion": 1.0,
"kind": "network#wifi",
"data": {
"updated": "2019-10-29T19:29:54.001Z",
"items": [
{
"service": "wifi_8cf710c4d079_54502d4c494e4b5f48_managed_psk",
"ipv4": {
"Method": "dhcp",
"Address": "192.168.123.123",
"Gateway": "192.168.123.1",
"Netmask": "255.255.255.0"
},
"Ethernet": {
"Method": "auto",
"Interface": "wlan0",
"Address": "8C:F7:10:C4:D0:79"
},
"Nameservers": [
"1.1.1.1",
"8.8.8.8"
]
},
{
"service": "wifi_8cf710c4d079_574946495f54455354_managed_psk",
"Nameservers": "",
"Security": "psk",
"ipv4": {
"Method": "",
"Address": "",
"Netmask": "",
"Gateway": ""
},
"ethernet": {
"Method": "auto",
"Interface": "wlan0",
"Address": "8C:F7:10:C4:D0:79"
}
}
]
}
}
```
Response on error:
```text
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset-utf8
{
error: {
code: 400,
message: "Auth token invalid!"
}
}
```