lua: динамическая запись http - PullRequest
0 голосов
/ 22 марта 2020

Я пытаюсь использовать веб-сервис, используя Lua язык программирования. Когда я запускаю свой скрипт, я получаю http-ошибку 500. Мой API написан на Python Flask, и это мой Lua скрипт.

http = require("socket.http");
ltn12 = require("ltn12");
param_1 = argv[1];
param_2 = argv[2];
path = "http://www.url.com:8080/api/"
body = [[ {"number_id":"b8ce37fb-2061-4aea-975b-57a8e2d355ce","caller_number":param_1,"called_number":param_2} ]]
response_body = { }
res, code, response_headers, status = http.request
{
    url = path,
    method = "POST",
    headers =
    {
          ["X-Access-Key"] = "xxxxxxxxxxxxx",
          ["Content-Type"] = "application/json",
          ["Content-Length"] = body:len()
    },
    source = ltn12.source.string(body),
}

Я получил следующее python traceback:

Expecting value: line 1 column 70 (char 69)(185.22                                                                                                             2.62.80)
Traceback (most recent call last):
File "/root/TVS/tokens-via-sva/app/controllers/api/codes.py", line 31, in crea                                                                                                             te_code
    data = json.loads(request.data)
File "/usr/lib/python3.6/json/__init__.py", line 354, in loads
     return _default_decoder.decode(s)
File "/usr/lib/python3.6/json/decoder.py", line 339, in decode
     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode
     raise JSONDecodeError("Expecting value", s, err.value) from None
    json.decoder.JSONDecodeError: Expecting value: line 1 column 70 (char 69)

в чем причина проблемы?

1 Ответ

0 голосов
/ 24 марта 2020

Lua не поддерживает очень распространенный формат для создания тела http. Указанный формат c в lua предназначен для вставки реальных данных в тело строки = [[....]] вместо имени переменной. в этом случае:

body = [[ {"number_id":"b8ce37fb-2061-4aea-975b-57a8e2d355ce","caller_number":"]]..param_1..[[","called_number":"]]..param_2..[["} ]];
...