[json] curl을 위해 JSON 파일을 통해 페이로드를 전달하는 방법은 무엇입니까?
curl
다음 명령 을 실행하여 장소를 성공적으로 만들 수 있습니다 .
$ 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 파일에 저장하고 싶습니다.
// 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"]
}
따라서 다음과 같이 실행되도록 명령을 수정합니다.
$ curl -vX POST http://server/api/v1/places.json -d @testplace.json
이 반환에 실패합니다 HTTP/1.1 401 Unauthorized
. 왜?
답변
curl
기본 콘텐츠 유형이 인 POST 요청을 보냅니다 application/x-www-form-urlencoded
. JSON 요청을 보내려면 올바른 컨텐츠 유형 헤더를 지정해야합니다.
$ curl -vX POST http://server/api/v1/places.json -d @testplace.json \
--header "Content-Type: application/json"
그러나 서버가 json 입력을 허용하는 경우에만 작동합니다. .json
URL의 끝에이 있음을 나타냅니다 만 할 수있다 출력은 JSON, 그것은 반드시 또한 json으로 처리하는 것을 의미하지 않는다 입력 . API 문서는 API의 유무에 대한 힌트를 제공해야합니다.
이유 당신은 얻을 401
및 서버가 압축을 할 수 없기 때문에하지 다른 오류가 아마도 auth_token
귀하의 요청에서.