Quantcast
Channel: Microsoft Dynamics 365 Community
Viewing all articles
Browse latest Browse all 10657

Discovery of JSON-based custom services in AX 7

$
0
0

If you download AX integration samples from GitHub, you’ll see (in JsonConsoleApplication project) that you can call JSON-based custom services by code like this:

var request = HttpWebRequest.Create(ClientConfiguration.Default.UriString+"api/services/UserSessionService/AifUserSessionService/GetUserSessionInfo");
request.Headers[OAuthHelper.OAuthHeader]= OAuthHelper.GetAuthenticationHeader();
request.Method="POST";
request.GetResponse();

It will call the operation and return its return value as JSON:

{"$id":"1","AOSLocaleName":"en-US","AXLanguage":"EN-US","Company":"DAT","CompanyTimeZone":58,"CurrencyInfo":{"$id":"2","CurrencyCode":"USD","Description":"US Dollar","ExchangeRate":100.0,"ISOCurrencyCode":"USD","Prefix":"","Suffix":""},"IsSysAdmin":true,"UserId":"wintermute","UserPreferredCalendar":0,"UserPreferredTimeZone":18}

This is what happens when you use the POST method of HTTP; if you switch to GET, you’ll actually get some information about the service.

Therefore if you merely change the value of request.Method:

var request = HttpWebRequest.Create(ClientConfiguration.Default.UriString + "api/services/UserSessionService/AifUserSessionService/GetUserSessionInfo");
request.Headers[OAuthHelper.OAuthHeader] = OAuthHelper.GetAuthenticationHeader();request.Method = "GET";
request.GetResponse();

you’ll get a very different response:

{"Parameters":[],"Return":{"Name":"return","Type":"AifUserSessionInfo"}}

You can see that the operation doesn’t expect any parameters and it returns a single object of AifUserSessionInfo type. This gives you some limited information about how to use this service.

You can also use GET requests to discover existing services and their operations.

/api/services gives you a list of all service groups:

{"ServiceGroups":[{"Name":"AxClient"},,{"Name":"UserSessionService"}]}

/api/services/UserSessionService provides a list of services in the service group:

{"Services":[{"Name":"AifUserSessionService"}]}

/api/services/UserSessionService/AifUserSessionService shows all operations of the individual service:

{"Operations":[{"Name":"ApplyTimeZone"},{"Name":"GetAccessRights"},{"Name":"GetPartitionKey"},{"Name":"GetPartitionKeysForUser"},{"Name":"GetUserSessionInfo"},{"Name":"IsSinglePartitionSystem"},{"Name":"RemoveTimeZone"}]}

Don’t forget than opening an URL in browser makes a GET request, therefore you don’t have to write any code to get this kind of information about custom services.

But maybe you would like something a bit more sophisticated, which is the topic of the next post: Open API for JSON-based custom services in AX 7.


Viewing all articles
Browse latest Browse all 10657

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>