curl로 JSON POST할 때 --json 한 방으로 끝내기
조회 1 · 댓글 0
REST API를 curl로 찔러볼 때마다 -d에 -H "Content-Type: application/json"까지 매번 붙이기 번거롭습니다. curl 7.82.0부터 들어온 --json 하나면 이 셋을 대신합니다. 정확히는 --data-binary [arg], --header "Content-Type: application/json", --header "Accept: application/json"을 합친 단축 옵션이라, 요청과 응답 협상까지 JSON으로 잡힙니다. 기본 메서드는 POST입니다.
curl --json '{"name":"kim","role":"dev"}' https://api.example.com/users데이터가 길면 @파일명으로 파일에서 읽고, @-면 표준입력에서 받습니다. 그래서 jq 출력을 그대로 이어붙이기 좋습니다. --json은 같은 명령에 여러 번 쓸 수 있고, curl이 값들을 텍스트로 이어붙여 한 번에 보냅니다(JSON 병합이 아니라 단순 연결입니다).
jq -n '{q:"test"}' | curl --json @- https://api.example.com/search한 가지 주의점은 curl이 내용을 파싱하지 않는다는 점입니다. 유효한 JSON인지는 보내는 쪽에서 확인해야 합니다. PUT이나 PATCH로 보내려면 -X PUT을 함께 쓰면 됩니다.
로그인 후 답글을 남길 수 있습니다.