여러 줄의 JSON으로 컬
아래의 curl 명령을 고려하십시오. JSON에서 줄 바꿈을 허용하고 (최소화없이) 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 {
을 수정하는 방법 에서 오류가 발생한 것 같습니다 .
업데이트 : 실제로 이전에 문제없이 명령을 실행할 수 있었지만 최근에 문제가 발생한 이유를 모르겠습니다.
Bash man 페이지에 설명되어 있고 여기에 자세히 설명되어있는 "Here Document"를 사용하여이 작업을 수행하는 또 다른 방법을 기억 했습니다 . @-
수단은 STDIN에서 몸을 판독하면서 << EOF
컬을 STDIN 같은 "EOF"까지 파이프 수단 스크립트 함량. 이 레이아웃은 별도의 파일을 사용하거나 "변수 에코"방식을 사용하는 것보다 읽기가 더 쉬울 수 있습니다.
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
참고 : --trace <outfile>
컬 옵션을 사용 하여 전선을 통과하는 것을 정확하게 기록 하십시오. 어떤 이유로이 Here Document 접근 방식은 줄 바꿈을 제거합니까?!?
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 파일에서 실행하기 만하면됩니다. 이것이 유용한 지 여부는 수행하려는 작업에 따라 다릅니다.
외부 큰 따옴표를 사용하고 다음과 같이 모든 내부 따옴표를 이스케이프해야합니다.
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"
}
}'
이제 다음을 사용하여 이것을 curl로 전달할 수 있습니다 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 @-
For some reason, this Here Document approach strips newlines
@eric-bolinger the reason the Heredoc strips newlines is because you need to tell your Heredoc to preserve newlines by quoting the EOF:
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
Notice the single-ticks surrounding EOF the first time it's defined, but not the second.
참고URL : https://stackoverflow.com/questions/34847981/curl-with-multiline-of-json
'development' 카테고리의 다른 글
Windows에서 Cygwin을 통해 쉘 스크립트 실행 (0) | 2020.12.10 |
---|---|
Gulp-uglify : 던지기 어; (0) | 2020.12.10 |
IntelliJ에서 불가능한 일이 Eclipse에서 가능합니까? (0) | 2020.12.10 |
SQL 계산에서 별칭 사용 (0) | 2020.12.10 |
Android에서 ListView 항목 제거 (0) | 2020.12.10 |