开发中的RESTFul API (V3)¶
本页详细介绍Dawn IOT所使用的RESTFul API 框架、开发工具以及测试代码。
REST API 框架¶
DawnMedical的RESTFul API,将所有资源(Resources)对象的增删改查(CRUD)时钟常见操作对应到HTTP的四种方法中。
动作 | English | HTTP Method |
---|---|---|
增加 | 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++¶
待更新