LINUX.ORG.RU

curl, HTTP POST и Content-Type

 , ,


0

1

Есть закрыто-несвободная программа, которой можно управлять через REST API. Пробовал curl – POST не работал. Попробовал Insomnia (https://github.com/Kong/insomnia) – часть вариантов заработала. Судя по всему, принимает только если Content-Type установлен в «application/json», «application/xml», «text/plain». Проблема в том, что curl --data и curl --data-ascii задают «Content-Type: application/x-www-form-urlencoded», даже в случае curl --data-ascii @file.txt. То же для --data-binary, --data-raw и --data-urlencode.

Переопределять MIME-тип данных при помощи -H можно, но неудобно. Есть ли у curl команда, чтобы постить текстовые данные?

Или это похоже на баг в curl, и --data-ascii должно задавать другой тип?

Ответ: пока предложили --json, который подставляет в хедер "Content-Type: application/json" и "Accept: application/json"

★★★

Последнее исправление: olegd (всего исправлений: 1)

Проблема в том, что curl –data и curl –data-ascii задают «Content-Type: application/x-www-form-urlencoded»

–data-ascii

(HTTP) This option is just an alias for -d, –data.

-d, –data

(HTTP MQTT) Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This option makes curl pass the data to the server using the content-type application/x-www-form-urlencoded.

/thread

static_lab ★★★★★
()

Переопределять MIME-тип данных при помощи -H можно, но неудобно

ИМХО явное указание Content-Type — это единственный правильный вариант, я бы не стал вообще полагаться на то, что там другие ключи курла неявно устанавливают. Сделай себе alias или напиши функцию для шэлла, в котором ты его вызываешь.

theNamelessOne ★★★★★
()

Переопределять MIME-тип данных при помощи -H можно, но неудобно

Если неудобно, то curl не тот инструмент. Надо смотреть на httpie или многочисленные его клоны. Это курл + сахар + максимально удобные дефолты, которые тулза выбирает за вас.

Конкретно для application/json в свежем curl есть --json, но уверен что если -H «неудобно», то следующее неудобство будет прям скоро.

Belkrr
()