JSON 파일을 통해 payload를 curl로 전달하려면 어떻게 해야 합니까?
다음을 통해 성공적으로 플레이스를 만들 수 있습니다.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 파일에 payload를 저장합니다.
// 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
당신의 요청으로부터.
게시할 JSON을 포함하는 파일을 실제로 지정하는 방법을 명확히 하려면 이 파일은@
OP에 나타난 대로 서명하다
예를 들어, 로컬에의 전형적인 투고입니다.NET 코어 API:
curl -X POST https://localhost:5001/api -H "Content-Type: application/json" -d @/some/directory/some.json
넌 할 수 있다.cat
의 내용물json
까지 줄서다.curl
경유로--data-raw
파라미터
curl https://api.com/route -H 'Content-Type: application/json' --data-raw "$(cat ~/.json/payload-2022-03-03.json | grep -v '^\s*//')"
curl https://api.com/route -H 'Content-Type: application/json' -d @<(jq . ~/.json/payload-2022-03-03.json)
curl https://api.com/route -H 'Content-Type: application/json' -d @<(jq '{"payload": .}' < ~/.json/payload-2022-03-03.json)
주의: json 파일의 코멘트는, 다음의 방법으로 필터링 됩니다.grep -v '^\s*//'
데이터를 다음 주소로 전달할 수도 있습니다.curl
경유로stdin
사용.grep
또는cat
또는jq
grep -v '^\s*//' ~/.json/payload-2022-03-03.json | curl https://api.com/route -H 'Content-Type: application/json' -d @-
cat ~/.json/payload-2022-03-03.json | grep -v '^\s*//' | curl https://api.com/route -H 'Content-Type: application/json' -d @-
jq . ~/.json/payload-2022-03-03.json | curl https://api.com/route -H 'Content-Type: application/json' -d @-
jq '{"payload": .}' < ~/.json/payload-2022-03-03.json | curl https://api.com/route -H 'Content-Type: application/json' -d @-
언급URL : https://stackoverflow.com/questions/18611903/how-to-pass-payload-via-json-file-for-curl
'programing' 카테고리의 다른 글
AngularJS 번호 입력 형식 보기 (0) | 2023.03.20 |
---|---|
API 호출에서 WordPress 커스터마이저의 선택 상자에 추가하는 방법은 무엇입니까? (0) | 2023.03.20 |
WordPress는 계속해서 index.php 및 .htaccess 파일을 만들고 사용 권한을 0444로 변경합니다. (0) | 2023.03.20 |
Wordpress 내부에서 Larabel에서 인증된 사용자를 확인하시겠습니까? (0) | 2023.03.20 |
AngularJs 서비스에서 사용자 지정 이벤트를 생성하는 방법 (0) | 2023.03.20 |