Here is a solution to call Infor M3 API on the client-side using the Dojo Toolkit. This is a continuation of the previous posts, how to call M3 API with jQuery DataTables, and How to call an M3 Web Service using jQuery.
First, create an HTML file somewhere on the same domain as the M3 API REST endpoint as I explained in a previous post, for example:
Second, use the new dojo/request/xhr to make the HTTP Request to M3 API with REST/JSON:
<html> <head> <script src="//ajax.googleapis.com/ajax/libs/dojo/1.9.1/dojo/dojo.js"></script> <script> require(['dojo/request/xhr'], function (xhr) { xhr('/m3api-rest/execute/CRS610MI/LstByNumber', { method: 'GET', withCredentials: true, user: 'Tschneider', password: '********', headers: {'Accept': 'application/json'}, handleAs: 'json', }).then(function (response) { for (var i in response.MIRecord) { var record = {}; response.MIRecord[i].NameValue.map(function (o) { record[o.Name] = o.Value; // transform each record to an associative array accessible by a key }); console.log(record['CONO'] + ': ' + record['CUNO'] + ': ' + record['COR2'] + ': ' + record['WHLO'] + ': ' + record['TOWN']); } }); }); </script> </head> <body> </body> </html>
Then, open the webpage in a browser, in my case I used the Google Chrome JavaScript console (CTRL+SHIFT+J) to output the M3 API response:
That’s it! In a next post, I will show how to render the data using the Dojo DataGrid.
UPDATE 2013-07-10: To improve performance of client-side code for multiple M3 API requests, we can use the M3 API Pooling, the Generic pooling mechanism for client programs.
One thought on “How to call M3 API using the Dojo Toolkit”