Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
cours:mit_2018_2019:soa4iotlab [2019/01/29 07:02] tigli [SOA for IoT and WS-SOAP] |
cours:mit_2018_2019:soa4iotlab [2019/02/04 17:24] tigli [SOA for IoT and WS-SOAP] |
||
---|---|---|---|
Ligne 20: | Ligne 20: | ||
[[https://curl.haxx.se/|curl]] is used in command lines or scripts to transfer data. | [[https://curl.haxx.se/|curl]] is used in command lines or scripts to transfer data. | ||
- | |||
Curl is mainly used to send/receive some HTTP messages with command lines. That's the reason why curl is well adapted for first [[https://www.baeldung.com/curl-rest|tests of Rest services]]. | Curl is mainly used to send/receive some HTTP messages with command lines. That's the reason why curl is well adapted for first [[https://www.baeldung.com/curl-rest|tests of Rest services]]. | ||
Ligne 26: | Ligne 25: | ||
Lot of WS-REST API are available on the web. Big compagnies provide some Cloud of Services using this kind of access. For example the IBM Cloud provides [[https://cloud.ibm.com/catalog?search=REST|its own list of services]]. | Lot of WS-REST API are available on the web. Big compagnies provide some Cloud of Services using this kind of access. For example the IBM Cloud provides [[https://cloud.ibm.com/catalog?search=REST|its own list of services]]. | ||
- | **Exercice**: After Signin, test services like TexttoSpeech with curl. | + | Look at a "text to speech" demonstration [[https://text-to-speech-demo.ng.bluemix.net/|here]] |
+ | |||
+ | **Exercice**: After Sign up, test services like TexttoSpeech with curl. Find more details in a step by step tutorial [[https://console.bluemix.net/docs/services/text-to-speech/getting-started.html#gettingStarted|here]]. | ||
**Question**: Look at IBM Watson IoT Plateform. What does it provide ? | **Question**: Look at IBM Watson IoT Plateform. What does it provide ? | ||
Ligne 53: | Ligne 54: | ||
{{:cours:mit_2018_2019:node-red_solution_assembly_export.rtf|}} | {{:cours:mit_2018_2019:node-red_solution_assembly_export.rtf|}} | ||
- | |||
- | |||
** Rest server : ** | ** Rest server : ** | ||
Ligne 62: | Ligne 61: | ||
**Exercice**: | **Exercice**: | ||
To create a WS-Rest in Node-Red : | To create a WS-Rest in Node-Red : | ||
- | - Use the http node from the input block to handle request from outside. | + | - Use the http node from the input block to handle request from outside on the following URL: /date |
- Drag the http response node from the output block. This will output the payload of the msg as response of API. | - Drag the http response node from the output block. This will output the payload of the msg as response of API. | ||
- | - Now go to your browser and hit http://localhost:1880/users to use your WS-REST API. | + | - Add the current date as a response to the REST GET request on /date |
+ | - Now go to your browser and hit http://localhost:1880/date to use your WS-REST API. | ||
+ | |||
+ | **Advanced Exercice**: write your own REST server that gets an MQTT topic and provides it through a web service API. // You can extend a past lab MQTT example to do that//. | ||
- | **Advanced Exercice**: write your own REST server that getw an MQTT topic and provide it through a web service API. // you can extend a past lab MQTT example to do that//. | ||
Ligne 73: | Ligne 74: | ||
== Get started with WS-SOAP == | == Get started with WS-SOAP == | ||
+ | |||
+ | http://www.dataaccess.com/ provide a list of WS-SOAP. | ||
+ | The main initial difference between WS-REST and WS-SOAP was the explicit description of the WS-SOAP API in a WSDL format (Web Service Descrition Language). | ||
+ | |||
+ | ** Question**: Thanks to <code> http://www.dataaccess.com/webservicesserver/NumberConversion.wso?WSDL </code> URI, display this description for NumberConversion WS-SOAP. | ||
+ | Look at the different part of this XML file to understand the corresponding SOAP API. | ||
+ | Test this WS-SOAP with <code>http://www.dataaccess.com/webservicesserver/NumberConversion.wso?op=NumberToWords</code> | ||
== WS-SOAP in Node-Red == | == WS-SOAP in Node-Red == | ||
+ | **Soap client** | ||
- | * Exercice: write your own client programm of a SOAP web service and node-red-contrib-soap package [[https://flows.nodered.org/node/node-red-contrib-soap|SOAP web service]]. | + | **Exercice:** Create a WS-Soap Client to test your own WS-Soap server : <code>http://www.dataaccess.com/webservicesserver/NumberConversion.wso?op=NumberToWords</code> |
- | * Use GetGeoIP [[http://www.webservicex.net/geoipservice.asmx|SOAP Web Services]] to easily look up countries by IP addresses. | + | |
- | * Exercice: test your own soap server with // npm install node-red-contrib-soapserver// (see [[https://www.npmjs.com/package/node-red-contrib-soapserver| ]]). | + | To do that in node-red you must install two packages : |
- | ** Soap server Usage ** | + | * node-red-contrib-soap |
+ | * node-red-contrib-soapserver | ||
+ | |||
+ | use the manage palette to install them | ||
+ | |||
+ | [[cours:mit_2018_2019:node_red_soap_client_correction|correction]] | ||
+ | |||
+ | ** Soap server ** | ||
+ | |||
+ | ** Exercice**: Create your own soap server with // npm install node-red-contrib-soapserver// (see [[https://www.npmjs.com/package/node-red-contrib-soapserver| ]]). | ||
This package provides a node that can be used to start a Node-RED flow. The node is called soap server and listens on a configurable TCP port on the host on which Node-RED run. It is important that the port number be supplied as there is no default assumed. The listener is listening for an incoming SOAP/HTTP request. The WSDL that describes the SOAP server can be retrieved through an HTTP GET request using the <code> /soap?wsdl </code> URL and query parameters. For example: | This package provides a node that can be used to start a Node-RED flow. The node is called soap server and listens on a configurable TCP port on the host on which Node-RED run. It is important that the port number be supplied as there is no default assumed. The listener is listening for an incoming SOAP/HTTP request. The WSDL that describes the SOAP server can be retrieved through an HTTP GET request using the <code> /soap?wsdl </code> URL and query parameters. For example: | ||
Ligne 100: | Ligne 117: | ||
A Node-RED flow that starts with a soap server node should also conclude with a corresponding soap server output node. This is used to pass back a value to the original SOAP client. The string found in msg.payload is returned as the response value. | A Node-RED flow that starts with a soap server node should also conclude with a corresponding soap server output node. This is used to pass back a value to the original SOAP client. The string found in msg.payload is returned as the response value. | ||
- | * Exercice: write your own soap server that get an MQTT topic and provide it on web service client request | ||
- | == IoT Use Cases with WS-SOAP == | + | **Soap client** |
+ | |||
+ | **Exercice:** write your own client programm of a SOAP web service and node-red-contrib-soap package [[https://flows.nodered.org/node/node-red-contrib-soap|SOAP web service]]. Create a WS-Soap Client to test your own WS-Soap server. | ||
+ | |||
+ | ** Advanced Exercice**: write your own soap server that get an MQTT topic and provide it on web service client request | ||
==== SOA for IoT and CoAP ==== | ==== SOA for IoT and CoAP ==== | ||
{{ :cours:mit_2018_2019:osi-coap.png?300|}} | {{ :cours:mit_2018_2019:osi-coap.png?300|}} |