У меня была огромная трата времени, когда я пытался найти решение простой и основной проблемы. Я хочу отправить запрос POST к API, который ведет себя как вызов функции. А именно, у меня есть файл JSON, содержащий мои данные (~ 0,4 ГБ), и я хочу добавить (объединить) к нему небольшой JSON, содержащий параметры функций, через командную строку .
В качестве примера вы можете подумать о следующем:
Дан набор данных, содержащий, например, пользователей :
data.json <- {"users": ["Mary", "Bob", ...]}
Теперь я хочу проверить, есть ли пользователь «Боб» в наборе «пользователи».
Мой API возвращает true
или false
, если "Bob"
принадлежит в нем или нет.
Существует два сценария структуры ввода, ожидаемых от моего API:
Первый
API ожидает данные как {"u": "Bob", "users": ["Mary", "Bob", ...]}
Я пробовал те два, которые не работали:
curl http://API/ -d '@data.json' -d '{"user":"Bob"}'
curl http://API/ -d `jq -s '.[0] + .[1]' data.json '{"user":"Bob"}'`
Я хочу получить результат этогооперация python отправляет curl:
def merge():
a = json.load('data.json')
b = {'user': 'Bob'}
a.update(b)
return json.dumps(a)
, но с использованием программ командной строки.
Second
API в этом случае ожидает данные как {"u": "Bob", "data":{"users": ["Mary", "Bob", ...]}}
Это похоже на распаковку json внутри вашего вызова, например:
curl http://API/ -d '{"data": @data.json <- unpack the json file, "user":"Bob"}'
(это не работает)
Я хочу, чтобы результат этой операции python отправлялся в curl
def merge():
return json.dumps({'user': 'Bob', 'data': json.load('data.json')})
, но с использованием программ командной строки.
Обратите внимание, что я не хочу писать Python, скрипт не создает новые файлы, но имеет простой и общий результат, который любойможно использовать, не зная всего о data.json
.