Отправка JSON
Урок 35 из 47 курса Сетевое взаимодействие в терминале на Coddy.
Сегодня большинство API ожидают JSON, а не кодирование формы. Нужно изменить две вещи, и забыть о второй — самая распространённая ошибка во всей этой области.
curl -s -H 'Content-Type: application/json' \
-d '{"name":"ada"}' http://127.0.0.1:9125/usersВо-первых, тело становится JSON. Во-вторых, вы должны объявить это с помощью заголовка Content-Type, потому что в противном случае curl по-прежнему помечает тело как данные формы. Затем сервер пытается разобрать JSON как пары key=value и отклоняет его, обычно с ошибкой 400.
Поэтому, когда API сообщает, что ваш JSON недействителен, хотя вам он кажется совершенно корректным, проверьте заголовок, прежде чем проверять JSON.
Также следите за кавычками. JSON изобилует двойными кавычками, поэтому заключите всё тело в одинарные кавычки, и оболочка оставит его без изменений.
Задание
ЭкспертОтправьте настоящий JSON и докажите, что он был правильно обозначен.
- Запустите слушатель захвата на порту 9125
- Отправьте методом POST тело
{"name":"ada"}на/users, указав, что это JSON - Выведите строку Content-Type из
req.txt
Ожидаемый вывод:
Content-Type: application/jsonПопробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Сетевое взаимодействие в терминале
4Доступен ли он?
ICMP и pingЧтение вывода pingКогда ping вводит в заблуждениеОтказано или превышено время ожиданияПовторение: доступность7Отправка данных
POST с -dЧто на самом деле отправляет -dКодирование формыОтправка JSONPUT и DELETEПовторение: запись данных3Порты и сокеты
Что такое портХорошо известные портыЛокальный хостПрослушивание и подключениеПовторение: порты6curl в деталях
Просмотр заголовковСохранение ответовПользовательские заголовкиСтатус и время выполненияКоды выхода curlПовторение: флаги curl9Аутентификация и отладка
API-ключи и BearerUser-AgentТайм-ауты и повторные попыткиАнализ ошибкиПовторение: отладкаПотренируйтесь самостоятельно: Песочница Terminal