Forum Discussion
Pull data from RESTful API with token authentication
- Anonymous9 years ago
Hi adam3039,
According to your description, you want to get the token of restful api, right?
You can write a power query function to get token,then use this function as the parameter to call the api.For detail information about get token, you can refer below article:
REST API Token-based AuthenticationCall API Sample:
let CallAPi= ( URI as text, Username as text, Token as text, Paremeter as table, optional Timeout as number ) as any => let WebTimeout = if Timeout = null then #duration(0,0,0,100) else #duration(0,0,0,Timeout) , WebServiceContent = function(Paremeter),//format parameters to content WebResponse = Web.Contents(Username&":"&Token&URI, [Content = Text.ToBinary(WebServiceContent), Headers = [Authorization="xxxxx", #"Content-Type"="application/json", Accept="application/json"], Timeout = WebTimeout]), output = formatfunction(WebResponse) //format the response in output in CallAPiRegards,
Xiaoxin Sheng
Hi adam3039,
According to your description, you want to get the token of restful api, right?
You can write a power query function to get token,then use this function as the parameter to call the api.
For detail information about get token, you can refer below article:
REST API Token-based Authentication
Call API Sample:
let
CallAPi= (
URI as text,
Username as text,
Token as text,
Paremeter as table,
optional Timeout as number
) as any =>
let
WebTimeout = if Timeout = null then #duration(0,0,0,100) else #duration(0,0,0,Timeout) ,
WebServiceContent = function(Paremeter),//format parameters to content
WebResponse = Web.Contents(Username&":"&Token&URI,
[Content = Text.ToBinary(WebServiceContent),
Headers = [Authorization="xxxxx",
#"Content-Type"="application/json",
Accept="application/json"],
Timeout = WebTimeout]),
output = formatfunction(WebResponse) //format the response
in
output
in
CallAPi
Regards,
Xiaoxin Sheng
Anonymous,
Could you explain this bit clearly...like how to apply the function as a parameter etc?
let
CallAPi= (
URI as text,
Username as text,
Token as text,
Paremeter as table,
optional Timeout as number
) as any =>
let
WebTimeout = if Timeout = null then #duration(0,0,0,100) else #duration(0,0,0,Timeout) ,
WebServiceContent = function(Paremeter),//format parameters to content//Which parameter?
WebResponse = Web.Contents(Username&":"&Token&URI,
[Content = Text.ToBinary(WebServiceContent),
Headers = [Authorization="xxxxx",
#"Content-Type"="application/json",
Accept="application/json"],
Timeout = WebTimeout]),
output = formatfunction(WebResponse) //format the response //how to format?
in
output
in
CallAPiThanks you.
- Breticious8 years ago
Helper I
Does the key change upon each refresh of the data or does it remain static for every session?
- Anonymous8 years agoNot applicable
hi Breticious,
Thank you for the reply,ofcourse the key will change every time(Whenever the user login new token will generate)
- Breticious8 years ago
Helper I
Unfortunately, your situation is likely to differ greatly from the rest of our situations since most API creators do not follow the same protocols as others. This inconsistency is good in the sense of bots having a harder time breaking through but in turn makes it very difficult for new coders to modify something they don't fully follow.
You need to describe your scenario much more deeply.
1. How do you get authentication code?
2. Do you have a code given to you by the vendor that must be passed through to get the authentication code?
3. Once you have the code, where do you put it when passing it through to the GET web address? The header, the body, etc.?
4. If it goes in the header, what is the value named?
5. What is the content format of your request?
6. What is the request call to the GET address?
I cannot just give you my code's scenario because I can almost guarantee that it is NOT going to fit your scenario just as the author of this post's scenario did not fit mine. The modifications I made to my code does not resemble the code above whatsoever now.