开发中的RESTFul API (V3)

本页详细介绍Dawn IOT所使用的RESTFul API 框架、开发工具以及测试代码。

REST API 框架

DawnMedical的RESTFul API,将所有资源(Resources)对象的增删改查(CRUD)时钟常见操作对应到HTTP的四种方法中。

REST API Operations
动作 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++

待更新

node.js Javascript

待更新

杜恩医疗设备云及API说明