开发中的RESTFul API (V3) ======================================= 本页详细介绍Dawn IOT所使用的RESTFul API 框架、开发工具以及测试代码。 ============== REST API 框架 ============== DawnMedical的RESTFul API,将所有资源(Resources)对象的增删改查(CRUD)时钟常见操作对应到HTTP的四种方法中。 .. csv-table:: REST API Operations :header: "动作","English","HTTP Method" :widths: 12,12,12 "增加","Create",HTTP POST "删除",Delete,HTTP Delete "修改",Update,HTTP PUT "查询",Read,HTTP GET 操作的鉴权(Authentication)信息,即APIKey Hash承载在HTTP请求的头部信息中。 =========== 开发工具 =========== Chrome扩展工具中有Advanced REST Client。IE/FireFox等主流浏览器也都有对应的工具。 =========== 演示代码 =========== DawnMedical提供参考代码用于第三方应用于IoT Device Server的业务整合。 * pycurl for Python 3rd party applications, single thread * processing for Java 3rd party applications * C++ for Arduino & ARM mbed * javascript for node.js ---------------- Python pycurl ---------------- :: #!/usr/bin/env python import pycurl import StringIO import urllib import base64 import os import binascii url = "http://123.57.211.186:8888/json/v3/test/a0a00000" apikey = base64.b64encode("Dawn Medical Respirator") post_data_dic = {"user":"allankliu", 'pass':'ItRocks'} user_agent = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11' def initCurl(): rand = os.urandom(32) salt = binascii.hexlify(rand) head = ['Accept:*/*', 'API-Key:%s'%apikey, 'Salt:%s'%salt, 'User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11'] curl = pycurl.Curl() curl.setopt(pycurl.VERBOSE,1) curl.setopt(pycurl.FOLLOWLOCATION, 1) curl.setopt(pycurl.MAXREDIRS, 5) curl.setopt(pycurl.CONNECTTIMEOUT, 60) curl.setopt(pycurl.TIMEOUT, 300) curl.setopt(pycurl.HTTPPROXYTUNNEL,1) curl.fp = StringIO.StringIO() curl.setopt(pycurl.USERAGENT, user_agent) curl.setopt(pycurl.HTTPHEADER, head) curl.setopt(pycurl.URL, url) curl.setopt(curl.WRITEFUNCTION, curl.fp.write) return curl def get(): curl = initCurl() curl.perform() print curl.fp.getvalue() def post(): curl = initCurl() curl.setopt(curl.POSTFIELDS, urllib.urlencode(post_data_dic)) curl.perform() print curl.fp.getvalue() def delete(): curl = initCurl() curl.setopt(pycurl.CUSTOMREQUEST, 'DELETE') curl.perform() print curl.fp.getvalue() def put(): curl = initCurl() curl.setopt(pycurl.CUSTOMREQUEST, 'PUT') curl.setopt(curl.POSTFIELDS, urllib.urlencode(post_data_dic)) curl.perform() print curl.fp.getvalue() def main(): print "\r\nCREATE using HTTP POST" post() print "\r\nREAD using HTTP GET" get() print "\r\nUPDATE using HTTP PUT" put() print "\r\nDELETE using HTTP DELETE" delete() if __name__=='__main__': main() -------------------- Processing Java -------------------- 待更新 -------------------- ARM mbed C++ -------------------- 待更新 -------------------- node.js Javascript -------------------- 待更新 :doc:`index`