Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
mos:rest [2023/03/12 22:22]
optrix created
mos:rest [2024/04/16 06:30]
optrix
Line 1: Line 1:
 +====REST====
  
 +The REST output module turns your system into a web server that hosts values in a variety of machine-readable formats, including JSON and XML.
 +
 +The URL to read is **<nowiki>http://</nowiki>**//servername//<nowiki>/</nowiki>**api**.
 +
 +This is a //service// module - meaning that rather than //writing// data to another system, it opens a server to make that data available to systems that might want to read the information.
 +
 +^Parameter^Default^Meaning^
 +|**port**||The port number to host the web server on.|
 +
 +===Notes===
 +
 +It is important to note that if you have //multiple// output modules that require a web server, they will share a **single** server with the port number specified by the last module in your configuration file. 
 +
 +For example, if you wanted both [[Prometheus]] output on port 90 and [[REST]] output on port 9002 (in that order), your Prometheus endpoint would be available on port 9002 rather than 90. 
 +
 +
 +===Example===
 +
 +<code>
 +[
 +   {
 +       "method": "rest",
 +       "port": 82
 +   }
 +]
 +</code>
 +
 +//The above example would make your data available via REST API on port 82//
 +
 +===Parameters===
 +
 +The data is available in several formats, which you can specify using the **format** parameter in your REST call.
 +
 +Formats include **xml**, **json**, **csv** and **txt**.
 +
 +There are also a couple of //variant// formats, which provide subtle changes to the file format. For example, **csvh** and **txth** include a header row that isn't on the normal CSV and TXT formats.
 +
 +You can also access some variants on the normal XML and JSON layouts by adding a number to their format name. The basic **json** format provides data as a list of //arrays//, while **json2** provides it as a list of //objects//. The basic **xml** provides data with uniquely-named tags, while **xml2** provides data in 'v' tags and attributes giving the point name.
 +
 +===Other Modules===
 +
 +Return to the [[key-value methods|list of output modules]].