- 69
- 36
- Версия MoonLoader
- Другое
научите пожалуйста питониста отправлять на сервер запросы с луа. пытался отправлять таблицу без encodeJson, но на сервере ловлю код 422
на сервере написал чёто такое, но в случае отправки json таблицы даже не доходит до выполнения проверки. запрос падает сразу как сервер понимает, что не получил нужные ему данные.
"POST /api/users/create/ HTTP/1.1" 422 Unprocessable Entity
Lua:
require "lib.moonloader"
local effil = require "effil"
function asyncHttpRequest(method, url, args, resolve, reject)
local request_thread = effil.thread(function (method, url, args)
local requests = require 'requests'
local result, response = pcall(requests.request, method, url, args)
if result then
response.json, response.xml = nil, nil
return true, response
else
return false, response
end
end)(method, url, args)
-- Если запрос без функций обработки ответа и ошибок.
if not resolve then resolve = function() end end
if not reject then reject = function() end end
-- Проверка выполнения потока
lua_thread.create(function()
local runner = request_thread
while true do
local status, err = runner:status()
if not err then
if status == 'completed' then
local result, response = runner:get()
if result then
resolve(response)
else
reject(response)
end
return
elseif status == 'canceled' then
return reject(status)
end
else
return reject(err)
end
wait(0)
end
end)
end
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end
-- wait(1000)
sampAddChatMessage("{57BB74}" .. thisScript().name .. " ver " .. thisScript().version .. " {FFFFFF}загружен. Главное меню: {57BB74}/sa", -1)
sampRegisterChatCommand("reg", function(data)
local username, password = string.match(data, "(%S+)%s+(%S+)")
sampAddChatMessage("{57BB74}" .. thisScript().name .. " " .. username .. " " .. password, -1)
if username ~= nil and password ~= nil then
local data = {
username = username,
password = password
}
local json_data = encodeJson(data)
local response = encodeJson({ body = json_data, headers = {["Content-Type"] = "application/json"}})
sampAddChatMessage("{57BB74}" .. thisScript().name .. " запрос отправлен!", -1)
asyncHttpRequest("POST", "http://10.10.10.10:8080/api/users/create/", response,
function(success_response)
print(success_response.body)
end,
function(error_response)
print(error_response)
end
)
else
sampAddChatMessage("{57BB74}" .. thisScript().name .. " {FFFFFF}Используйте {57BB74}/reg [Логин] [Пароль]", -1)
end
end)
while true do
wait(0)
end
end
на сервере написал чёто такое, но в случае отправки json таблицы даже не доходит до выполнения проверки. запрос падает сразу как сервер понимает, что не получил нужные ему данные.
Python:
@app.post("/api/users/create/")
async def create_user(data=Body()):
print(data)
username = data.get("username")
password = data.get("password")
if username and password:
print(username)
print(password)
return JSONResponse({"message": "Успешно!"})
else:
return JSONResponse({"error": "Неверные данные"}, status_code=422)