JSON REST API And Open Weather Map Microservices
JSON REST API
JSON REST API is a system container that provides a restful endpoint and allows to transform the data generated by a microservice.
The config for the container should look in the following way:
{
"buffersize": 3,
"contentdataencoding": "utf8",
"contextdataencoding": "utf8",
"outputfields": {
"publisher": "source",
"contentdata": "temperature",
"timestamp": "time"
}
}
Which translates to the following YAML microservice file :
apiVersion: datasance.com/v3
kind: Microservice
metadata:
name: json-rest-api
spec:
agent:
name: local-agent
...
images:
catalogId: 7
config:
buffersize: 3
contentdataencoding: utf8
contextdataencoding: utf8
outputfields:
publisher: source
contentdata: temperature
timestamp: time
ports: []
...
application: my-application
Config explanation:
-
{"buffersize":3}
: this instructs the microservice to show last 3 messages_ -
publisher
: the uuid of ms sent messages_ -
contentdata
: message format_
E.g. if we route the microservice with Open Weather Map microservice, this will allow to access the weather data in a browser or in any other application or any device cloud.
Open Weather Map
Open Weather Map is a system container that retrieves the data from https://openweathermap.org/.
The config for the container should look in the following way:
{
"citycode": "5391997",
"apikey": "6141811a6136148a00133488eadff0fb",
"frequency": 1000
}
Which translates to the following YAML microservice file :
apiVersion: datasance.com/v3
kind: Microservice
metadata:
name: open-weather-map
spec:
agent:
name: local-agent
...
images:
catalogId: 8
config:
citycode: 5391997
apikey: 6141811a6136148a00133488eadff0fb
frequency: 1000
ports: []
...
application: my-application
Config explanation:
"citycode" - the code of the city
"apikey" - the api key of open weather map
"frequency" - the frequency of message sending in millis
Launching the Container
- The
Open Weather Map
images will always be available on ioFog Controllers using the catalog item ID6
. - The
JSON REST API
images will always be available on ioFog Controllers using the catalog item ID7
.
Please refer to the catalog overview if you don't know yet how to deploy microservices using catalog items.
Request
$ curl localhost:5555
Response
[
{
"source": "CmdxYrfZmPRLTH7rXMwKpW92zRHtggxw",
"temperature": {
"coord": {
"lon": -122.45,
"lat": 37.77
},
"weather": [
{
"id": 801,
"main": "Clouds",
"description": "few clouds",
"icon": "02n"
}
],
"base": "stations",
"main": {
"temp": 279.46,
"pressure": 1028,
"humidity": 65,
"temp_min": 276.45,
"temp_max": 282.55
},
"visibility": 16093,
"wind": {
"speed": 1.5,
"deg": 320
},
"clouds": {
"all": 20
},
"dt": 1548161760,
"sys": {
"type": 1,
"id": 5817,
"message": 0.0037,
"country": "US",
"sunrise": 1548170436,
"sunset": 1548206570
},
"id": 5391997,
"name": "San Francisco County",
"cod": 200
},
"time": 1548163407511
},
{
"source": "CmdxYrfZmPRLTH7rXMwKpW92zRHtggxw",
"temperature": {
"coord": {
"lon": -122.45,
"lat": 37.77
},
"weather": [
{
"id": 801,
"main": "Clouds",
"description": "few clouds",
"icon": "02n"
}
],
"base": "stations",
"main": {
"temp": 279.46,
"pressure": 1028,
"humidity": 65,
"temp_min": 276.45,
"temp_max": 282.55
},
"visibility": 16093,
"wind": {
"speed": 1.5,
"deg": 320
},
"clouds": {
"all": 20
},
"dt": 1548161760,
"sys": {
"type": 1,
"id": 5817,
"message": 0.0037,
"country": "US",
"sunrise": 1548170436,
"sunset": 1548206570
},
"id": 5391997,
"name": "San Francisco County",
"cod": 200
},
"time": 1548163408502
},
{
"source": "CmdxYrfZmPRLTH7rXMwKpW92zRHtggxw",
"temperature": {
"coord": {
"lon": -122.45,
"lat": 37.77
},
"weather": [
{
"id": 801,
"main": "Clouds",
"description": "few clouds",
"icon": "02n"
}
],
"base": "stations",
"main": {
"temp": 279.46,
"pressure": 1028,
"humidity": 65,
"temp_min": 276.45,
"temp_max": 282.55
},
"visibility": 16093,
"wind": {
"speed": 1.5,
"deg": 320
},
"clouds": {
"all": 20
},
"dt": 1548161760,
"sys": {
"type": 1,
"id": 5817,
"message": 0.0037,
"country": "US",
"sunrise": 1548170436,
"sunset": 1548206570
},
"id": 5391997,
"name": "San Francisco County",
"cod": 200
},
"time": 1548163409419
}
]