Доступ к REST API через скрипт lua - PullRequest
0 голосов
/ 24 марта 2020

Есть ли способ получить доступ к остальным API с помощью чистого lua сценария

GET / POST для обоих способов доступа и отображения ответа

я уже пробовал

    local api = nil
    local function iniit()
    if api == nil then
      -- body
      api = require("http://api.com")
            .create()
            .on_get(function ()
                return {name = "Apple",
                        id = 12345}

            end)
        end
     end

1 Ответ

0 голосов
/ 06 апреля 2020

В linux, ма c мы можем легко установить luarocks, а затем мы можем установить пакет curl. Это самый простой способ unix, как OS.


-- HTTP Get
local curl = require('curl')

curl.easy{
  url = 'api.xyz.net?a=data',
  httpheader = {
    "X-Test-Header1: Header-Data1",
    "X-Test-Header2: Header-Data2",
  },
  writefunction = io.stderr -- use io.stderr:write()
}
:perform()
:close()

В windows я столкнулся с несколькими проблемами. Не могу правильно установить luarocks. затем команда luarock install не работает правильная, и т. д. c ..

Сначала загрузите lua с официального сайта, а затем создайте структуру, подобную (ниже веб-сайта)

http://fuchen.github.io/dev/2013/08/24/install-luarocks-on-windows/

тогда я загружаю lua luadist http://luadist.org/

тогда я получил ту же структуру luadist извлеченная папка и lua папка.

объединены luadist папка и lua папка Наконец мы можем используйте http.soket

local http=require("socket.http");

local request_body = [[login=user&password=123]]
local response_body = {}

local res, code, response_headers = http.request{
    url = "api.xyz.net?a=data",
    method = "GET", 
    headers = 
      {
          ["Content-Type"] = "application/x-www-form-urlencoded";
          ["Content-Length"] = #request_body;
      },
      source = ltn12.source.string(request_body),
      sink = ltn12.sink.table(response_body),
}

print(res)
print(code)

if type(response_headers) == "table" then
  for k, v in pairs(response_headers) do 
    print(k, v)
  end
end

print("Response body:")
if type(response_body) == "table" then
  print(table.concat(response_body))
else
  print("Not a table:", type(response_body))
end

ЕСЛИ ВЫ ДЕЛАЕТЕ ЭТИ ШАГИ ПРАВИЛЬНО, ЭТО БУДЕТ РАБОТАТЬ НА 1000% УВЕРЕН

...