如何通过JSON文件传递有效载荷以进行curl? [英] How to pass payload via JSON file for curl?
问题描述
我可以通过执行以下命令的curl
成功创建一个地方:
I can successfully create a place via curl
executing the following command:
$ curl -vX POST https://server/api/v1/places.json -d "
auth_token=B8dsbz4HExMskqUa6Qhn& \
place[name]=Fuelstation Central& \
place[city]=Grossbeeren& \
place[address]=Buschweg 1& \
place[latitude]=52.3601& \
place[longitude]=13.3332& \
place[washing]=true& \
place[founded_at_year]=2000& \
place[products][]=diesel& \
place[products][]=benzin \
"
服务器返回HTTP/1.1 201 Created
.
现在,我想将有效负载存储在一个如下所示的JSON文件中:
The server returns HTTP/1.1 201 Created
.
Now I want to store the payload in a JSON file which looks like this:
// testplace.json
{
"auth_token" : "B8dsbz4HExMskqUa6Qhn",
"name" : "Fuelstation Central",
"city" : "Grossbeeren",
"address" : "Buschweg 1",
"latitude" : 52.3601,
"longitude" : 13.3332,
"washing" : true,
"founded_at_year" : 2000,
"products" : ["diesel","benzin"]
}
因此,我修改了要执行的命令,如下所示:
So I modify the command to be executed like this:
$ curl -vX POST http://server/api/v1/places.json -d @testplace.json
此操作无法返回HTTP/1.1 401 Unauthorized
.为什么?
This fails returning HTTP/1.1 401 Unauthorized
. Why?
推荐答案
curl
发送默认内容类型为application/x-www-form-urlencoded
的POST请求.如果要发送JSON请求,则必须指定正确的内容类型标头:
curl
sends POST requests with the default content type of application/x-www-form-urlencoded
. If you want to send a JSON request, you will have to specify the correct content type header:
$ curl -vX POST http://server/api/v1/places.json -d @testplace.json \
--header "Content-Type: application/json"
但是这仅在服务器接受json输入的情况下有效.网址末尾的.json
可能仅表示 output 是json,但这并不一定意味着它也会处理json input . API文档应提示您是否这样做.
But that will only work if the server accepts json input. The .json
at the end of the url may only indicate that the output is json, it doesn't necessarily mean that it also will handle json input. The API documentation should give you a hint on whether it does or not.
得到401
而不是其他错误的原因可能是因为服务器无法从您的请求中提取auth_token
.
The reason you get a 401
and not some other error is probably because the server can't extract the auth_token
from your request.
这篇关于如何通过JSON文件传递有效载荷以进行curl?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!