Разница между данными из файла и прямым вводом - PullRequest
0 голосов
/ 18 сентября 2018

Я отправляю данные с помощью curl в JAX-RS REST API, который принимает CSV.

Эта команда работает нормально:

curl -X POST -H 'Content-Type: text/csv' -d '
"name","age"
"Abe","35"
"Bob","40"
' $url

, и я вижу, как данные достигают API.

Однако, если я храню данные в файле с именем payload.csv и отправляю сообщение так:

curl -X POST -H 'Content-Type: text/csv' -d @payload.csv $url

, данные не доходят до API.В чем разница между этими двумя?

1 Ответ

0 голосов
/ 18 сентября 2018

Понял, мне нужно отправить данные файла, используя --data-binary, вот так:

curl -X POST -H 'Content-Type: text/csv' --data-binary @payload.csv $url

Из документация по curl :

- двоичные данные

(HTTP). Публикация данных выполняется в точности так, как указано, без дополнительной обработки. бы то ни было.

Если вы начнете данные с буквы @, остальные должны быть имя файла. Данные публикуются аналогично -d, --data, за исключением того, что переводы строки и возврат каретки сохраняются и преобразования никогда не выполняются.

Итак, опция -d убирает символы новой строки и возврата каретки при публикации файла!

...