여러 줄의 JSON으로 컬
아래의 curl 명령을 고려해 보십시오. JSON에서 새 줄을 허용하고(minify 없이) bash에서 직접 실행할 수 있습니까(Mac/Ubuntu).
curl -0 -v -X POST http://www.example.com/api/users \
-H "Expect:" \
-H 'Content-Type: text/json; charset=utf-8' \
-d \
'
{
"field1": "test",
"field2": {
"foo": "bar"
}
}'
위의 명령을 실행할 때 오류가 발생한 것 같습니다.second {
위의 명령을 수정하는 방법은 무엇입니까?
업데이트됨: 사실 이전에는 문제 없이 명령을 실행할 수 있었습니다. 최근에 문제가 발생한 이유를 잘 모르겠습니다.
Bashman 페이지에 설명되어 있고 여기에 자세히 설명되어 있는 "Here Document"를 사용하여 이 작업을 수행하는 다른 방법을 기억했습니다.그@-
STDIN에서 본문을 읽는 방법, 반면<< EOF
STDIN으로 "EOF"가 될 때까지 스크립트 내용을 파이프로 연결하여 컬링하는 것을 의미합니다.이 레이아웃은 별도의 파일이나 "메코 변수" 접근법을 사용하는 것보다 읽기가 더 쉬울 수 있습니다.
curl -0 -v -X POST http://www.example.com/api/users \
-H "Expect:" \
-H 'Content-Type: application/json; charset=utf-8' \
--data-binary @- << EOF
{
"field1": "test",
"field2": {
"foo": "bar"
}
}
EOF
참고: 사용:--trace <outfile>
curl 옵션을 사용하여 와이어를 통과하는 내용을 정확하게 기록할 수 있습니다.어떤 이유에서인지 이 문서 접근 방식은 새 줄을 제거합니다. (업데이트:새 줄은 curl -d 옵션으로 제거되었습니다.수정됨!)
JSON을 변수에 넣자는 Martin의 제안에 따라 JSON을 별도의 파일에 넣은 다음 파일 이름을 제공할 수도 있습니다.-d
curl의 @ 구문 사용:
curl -0 -v -X POST http://www.example.com/api/users \
-H "Expect:" \
-H 'Content-Type: text/json; charset=utf-8' \
-d @myfile.json
단점은 명백합니다(이전에 파일이 하나 있었던 경우 2개 이상).하지만 좋은 점은 스크립트가 파일 이름이나 디렉터리 인수를 수락할 수 있다는 점입니다. 편집할 필요가 없습니다. 다른 JSON 파일에서 실행하기만 하면 됩니다.그것이 유용한지 여부는 당신이 성취하려고 하는 것에 달려 있습니다.
어떤 이유에서인지 이 문서 접근 방식은 새로운 라인을 제거합니다.
@Eric-bolinger는 EOF를 인용하여 Heredoc에게 새 라인을 보존하도록 지시해야 하기 때문입니다.
curl -0 -v -X POST http://www.example.com/api/users \
-H "Expect:" \
-H 'Content-Type: text/json; charset=utf-8' \
-d @- <<'EOF'
{
"field1": "test",
"field2": {
"foo": "bar"
}
}
EOF
EOF가 처음 정의될 때는 한 번만 표시되지만 두 번째는 표시되지 않습니다.
외부 큰따옴표를 사용하고 모든 내부 따옴표를 이스케이프해야 합니다.
curl -0 -v -X POST http://www.example.com/api/users \
-H "Expect:" \
-H 'Content-Type: text/json; charset=utf-8' \
-d \
"
{
\"field1\": \"test\",
\"field2\": {
\"foo\": \"bar\"
}
}"
json을 var에 할당할 수 있습니다.
json='
{
"field1": "test",
"field2": {
"foo": "bar"
}
}'
이제 다음을 사용하여 이것을 컬로 전달할 수 있습니다.stdin
:
echo $json | curl -0 -v -X POST http://www.example.com/api/users \
-H "Expect:" \
-H 'Content-Type: text/json; charset=utf-8' \
-d @-
이것이 답이 될 수 있다고 생각합니다.
curl -0 -v -X POST http://www.example.com/api/users \
-H "Expect:" \
-H 'Content-Type: text/json; charset=utf-8' \
--data-raw '
{
"field1": "test",
"field2": {
"foo": "bar"
}
}'
언급URL : https://stackoverflow.com/questions/34847981/curl-with-multiline-of-json
'programing' 카테고리의 다른 글
WPF의 활성 창을 참조하시겠습니까? (0) | 2023.05.17 |
---|---|
특정 리비전으로 이동 (0) | 2023.05.17 |
새로 추가된 파일을 포함하여 모든 파일을 단일 명령으로 스테이징하고 커밋하려면 어떻게 해야 합니까? (0) | 2023.05.17 |
경로가 ':mypath'인 프로젝트를 루트 프로젝트 'myproject'에서 찾을 수 없습니다. (0) | 2023.05.17 |
PostgreSQL에서 기존 테이블에 자동 증분 기본 키를 추가하는 방법은 무엇입니까? (0) | 2023.05.17 |