Skip to main content

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 ID 6.
  • The JSON REST API images will always be available on ioFog Controllers using the catalog item ID 7.

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
}
]