Home > OS >  Roblox - Call external GraphQL API
Roblox - Call external GraphQL API

Time:10-01

I would like to call an external graphql API (without authentication for the moment). Here is my code :

local open_api = "https://graphqlzero.almansi.me/api"

local payload = '{"query": "query { post(id: 1) { id title body }}"}'

local headers = {
}


local function craftCall()
    local response
    local data

  pcall(function ()
        response = HttpService:PostAsync(open_api, payload,  Enum.HttpContentType.ApplicationJson, false, headers)
        data = HttpService:JSONDecode(response)
    end)

    if not data then return false end

  print(data)
    return false
end 
    
    
    
if craftCall() then
    print("Success")
else
    print("Something went wrong")
end

I get always something went wrong. I need some help on what is going wrong... Specially I don't know if am I correctly formatting the Payload.

CodePudding user response:

After your http call, you never return a success result. You've only outlined failure cases :

    if not data then return false end
    print(data)
    return false

So your conditional, if craftCall() then always evaluates to false.

Why not make it return true or data after the print(data)? Then you'll know that it made it to the end of the call successfully.

local function craftCall()
    local success, result = pcall(function()
        local response = HttpService:PostAsync(open_api, payload,  Enum.HttpContentType.ApplicationJson, false, headers)
        return HttpService:JSONDecode(response)
    end)

    if not success then
        warn("PostAsync failed with error : ", result)
        return false
    end
    
    -- return the parsed data
    return result
end
  • Related