Как сделать POST-запрос с помощью Luvit - PullRequest
0 голосов
/ 10 марта 2020

Я использую Luvit для одного из моих проектов, который использует некоторые онлайн-API для упрощения работы. Один из таких API просит меня выполнить POST-запрос к их конечной точке для обработки данных. Я просмотрел их официальную документацию, и даже некоторые неофициальные, но в итоге ничего не нашел. Я даже попробовал кое-что из следующего, и, похоже, ничего не работает

local http = require("coro-http")

coroutine.wrap(function()
    local head, body = http.request("POST", JSON_STORE_CLIENT, {{"Content-Type", "application/json"}}, "test")
    print(head)
    print(body)
end)()
--[[
table: 0x7f5f4a732148
<!DOCTYPE html>
<html lang="en">
...
basically tells its a bad request
</html>
]]

Может кто-нибудь помочь мне в выполнении операций REST с luvit, особенно POST, правильно?

1 Ответ

1 голос
/ 11 марта 2020

Ваш http.request работает должным образом и возвращает таблицу ответов (не только заголовки) и строку тела .

Вы публикуете Content-Type: application/json, но отправляете недействительно данные. Тело должно быть действительным JSON объект:

local http = require("coro-http")
local json = require("json")

coroutine.wrap(function()
    local data = {param1 = "string1", data = {key = "value"}}
    local res, body = http.request("POST", JSON_STORE_CLIENT,
      {{"Content-Type", "application/json"}},
      json.stringify(data))
      -- or static string [[{"param1": "string1", "data": {"key": "value"}}]]
    print(res.code)
    print(body)
end)()
...