REST Overview¶
Todo
- description
- pictures/charts about startup, url processing, MQ dialogs
- ...
Overview¶
REST is a web server which handle request in REST format. It is used by the user interfaces to get informations about devices, sensor history, send commands, ...
How to test REST requests¶
wget method¶
You can execute a REST GET request from a console using the wget command. For example you can run:
$ wget -qO- http://127.0.0.1:40405/device/1
This will run the request and show you the results (thanks to the -qO- parameter).
FireFox RESTClient¶
This Firefox plugin will allow you to send easily POST, DELETE and other requests.
Install FF plugin from here: https://addons.mozilla.org/en-us/firefox/addon/restclient/.
Lauch with Tools > RestClient
In this example we will use RESTClient for testing POST url
In the RESTClient interface menu go in Headers > Custom Header and :
- Create a header with name: ‘Content-Type’, value: ‘application/x-www-form-urlencoded’
- You may tick Save to favorites for the next time
Next, go back on the RESTClient main interface and fill the fields. Example for creating a new device:
- method: ‘POST’, url: ‘http://xxxxx:40405/device/‘
- body : name=device%20name&type=plugin&id=diskfree&host=darkstar&description=desc&reference=ref&device_type=diskfree.disk_usage
Then, click on Send
Configuration section in /etc/domogik/domogik.cfg¶
In Domogik configuration file, there are several options about REST in [rest] section:
- interfaces : the network interface to use : eth0, lo, ...
- port : the port for the rest service : 40405
- use_ssl : use ssl (True) or not (False)
- ssl_certificate : The ssl .crt file
- ssl_key : The ssl .key file
- clean_json : display a clean json result (indentation, carriage return) (True) or a raw result (False)
How to use REST with SSL?¶
Please read the installation documentation.
Status¶
Rest uses http status codes to identify the error:
- get:
code = 200
data = the returned data from the get request (json)
delete:
code = 204
data = empty
put (update):
code = 200
data = the updated object (json)
post (create):
code = 201
data = the new object (json)
error:
code = 400
data = {msg: “string describing the error”}
action ok, no content returned:
code = 204
data = Empty