В этой небольшой заметке мы хотим показать, как отправить HTTP POST запрос с телом/нагрузкой JSON с помощью curl под Bash.
Быстрое решение:
1 | echo '{"name": "john"}' | curl -X POST -H "Content-Type: application/json" -d @- http://localhost:80/path/to/rest/api |
на ненадежный HTTPS-сервер (самоподписанный сертификат):
1 | echo '{"name": "john"}' | curl -k -X POST -H "Content-Type: application/json" -d @- https://localhost:443/path/to/rest/api |
Где:
- -k позволяет запрашивать серверы с недоверенными сертификатами (например, localhost)
- -X POST указывает метод запроса
-H "Content-Type: application/json" информирует API сервера о типе отправленного содержимого - -d @- позволяет использовать stdin и отправлять им JSON-данные (-d @- является сокращением для --data-binary @-)
Альтернативное решение
Мы можем отправить полезную нагрузку JSON из указанного файла, используя:
1 | curl -X POST -H "Content-Type: application/json" -d @/path/to/data.json http://localhost:80/path/to/rest/api |
Где:
- -d @/path/to/data.json указывает на файл, содержащий JSON для отправки в теле POST-запроса.