Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago

Call Rest API from Advanced Editor

I'm new to PowerBI and have a simple web API i typically call in python.  I used the Advanced Editor in PowerBI.  It it telling the syntax is good, but then i get the error:  "Expression.Error: We cannot convert a value of type Record to type Number.
Details: Value=[Record] Type=[Type]"

 

thank you.

Here is my code in Advanced Editor:

let

    apiUrl = "http://someserver:7979/v1/completed_detail",

    body = "{""submission_id"" :""01-25-2021-15-47-25""}",

    result = Json.Document(apiUrl, [Headers = [#"Content-Type"="application/json"], Content = Text.ToBinary(body)])

in

    #"result"



 

5 Replies

  • mahoneypat's avatar
    mahoneypat
    Icon for Microsoft Employee rankMicrosoft Employee

    You need to use Web.Contents() to make the web call with Header, Content first, and then you can extract the data with Json.Document.  Use Web.Contents in place of Json.Document and then go from there.

    Pat

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      mahoneypat - i just posted my updated code.  thank you

  • Anonymous's avatar
    Anonymous
    Not applicable

    I've tried to use Web.Contents() like this:

    let
    
        apiUrl = "http://someserver:7979/v1/completed_detail",
    
        body = "{""submission_id"" :""01-25-2021-15-47-25""}",
    
        result = Json.Document(Web.Contents(apiUrl, [Headers = [#"Content-Type"="application/json"], Content = Text.ToBinary(body)]))
    
    in
    
        #"result"

    But getting error:

    DataSource.Error: Web.Contents failed to get contents from 'http://someserver:7979/v1/completed_detail' (405): METHOD NOT ALLOWED
    Details:
        DataSourceKind=Web
        DataSourcePath=http://someserver:7979/v1/completed_detail
        Url=http://someserver:7979/v1/completed_detail
    • mahoneypat's avatar
      mahoneypat
      Icon for Microsoft Employee rankMicrosoft Employee

      Thanks for the update.  Hard to troubleshoot it though.  It looks correct.  I assume you've confirmed through the documentation for the API you are using that the syntax is correct (e.g., method completed_detail is an option and submission_id has hyphens).

       

      FYI that you can also create the JSON for your body step with

      = Json.FromValue([submission_id = "01-25-2021-15-47-25"])

       

      Pat

    • v-yingjl's avatar
      v-yingjl
      Icon for Community Support rankCommunity Support

      Hi Anonymous ,

      Not certain but the query looks like correct. Seems that could not send post request to the web source. Make sure whether the URL is accessible or need authentication and try it again. 

       

      Best Regards,
      Community Support Team _ Yingjie Li
      If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.