我使用curl将数据发布到接受CSV的JAX-RS REST API。
这个命令工作正常:
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。这两者有什么区别?
想我需要使用--data-binary
发布文件数据,所以像这样:
curl -X POST -H 'Content-Type: text/csv' --data-binary @payload.csv $url
--data二进制
(HTTP)这完全按照指定发布数据,无需任何额外处理。
如果用字母@开始数据,其余的应该是文件名。数据以与-d相似的方式发布--data执行,但保留换行符和回车符并且永远不会进行转换。
所以-d
选项在发布文件时会删除换行符和回车符!