AIAPI开发文档
附件
REST 及 cURL 参考
REST(Representational State Transfer 表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
REST 相对于 SOAP 或 XML-RPC 的 Web Service 来讲明显的更加简洁,效率更高。
RESTful Web 服务(也称为 RESTful Web API)是一个使用 HTTP 并遵循 REST 原则的 Web 服务。它从以下三个方面资源进行定义:
- URI,比如:http://example.com/resources/。
- Web 服务接受与返回的互联网媒体类型,比如:TXT、JSON、XML、YAML 等。
- Web 服务在该资源上所支持的一系列请求方法(比如:POST、GET、PUT/PATCH 或 DELETE)。
REST 的优点:
- 可以利用缓存 Cache 来提高响应速度
- 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
- 浏览器即可作为客户端,简化软件需求
- 相对于其他叠加在 HTTP 协议之上的机制,REST 的软件依赖性更小
- 不需要额外的资源发现机制
- 在软件技术演进中的长期的兼容性更好
以下 REST 示例使用 cURL 为例描述。
cURL 简介
cURL^curl是利用 URL 语法在命令行方式下工作的文件传输工具。
它支持很多协议:FTP、FTPS、HTTP、HTTPS、GOPHER、TELNET、DICT、FILE 以及 LDAP。 cURL 同样支持 HTTPS 认证,HTTP POST 方法,HTTP PUT 方法,FTP 上传,Kerberos 认证,HTTP 上传, 代理服务器,cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,HTTP 代理服务器管道( proxy tunneling),甚至它还支持 IPv6, Socks5 代理服务器,通过 HTTP 代理服务器上传文件到 FTP 服务器等等,功能十分强大。
GET 请求
curl http://www.google.com
PUT 请求
curl -XPUT http://192.168.1.100:8080
请求参数
curl -XPUT -d "username=someone&password=1234" http://192.168.1.10:8080
请求参数 JSON
curl -d '{"username":"someone"}' -H "Content-Type: application/json" http://192.168.1.10:8080
HTTP Basic 验证
curl --basic --user username:password http://........
调试(显示详细信息)
curl -v http://.....
Websocket
传统的 HTTP 协议是单向的,而现代化丰富的应用需要在服务端和客户端实时的交换信息,这就需要一个双向的传输通道,Websocket 就是为了这一需求而生的。它在普通 HTTP 协议的基础上,通过 Upgrade 操作升级为一个双向的 Socket 长连接。
JSON RPC cURL 示例
curl -vvv --user "admin@seven.local:admin" --data \ '{ \ "jsonrpc": "2.0", \ "method": "ai.dial", \ "params": {\ "dial_string": "user/1000", \ "url": "localhost:9393/" \ }, \ "id": 2 \ }' -H "content-type: application/json" \ -H "X-XTRA-AUTH-ID: ec741840-9273-10b7-387e-728da01d8e80" seven.local:8081/v1