http: error: Request body (from stdin or a file) and request data (key=value) cannot be mixed.
μ΄ μ€λ₯λ λ€μ μ 맀ν©λλ€. λλ¨Έμ§ APIμ μνΈ μμ©νκΈ° μν΄ μ μ€ν¬λ¦½νΈλ₯Ό μμ± μ€μ΄λ©° λ€μμ μννκ³ μμ΅λλ€.
http --output subnet --pretty format --form post "${URLHOST}subnets" "cidr=${cidr}" "name=${name}" "description=${name}" "availabilityZoneId=${az}" "networkId=${VPCid}" "$ACCESSKEY" "$SECRETKEY" "$ACCOUNTID" "_providerId=aws" "_regionId=${REGION}"
('cho'κ° μμ μ€λ©΄ μλ²½νκ² μλνλ λͺ λ Ήμ μμ±ν©λλ€. κ·Έλ¬λ μ΄ λ²μ μμλ μ λͺ©μ μ€λ₯κ° μμ΅λλ€.
λ΄κ° λ°λ³΄μΈκ°, μλλ©΄ λ€λ₯Έ 무μμΈκ°?
μ°Έκ³ : μμ κ²°κ³Όλ λ€μκ³Ό κ°μ΅λλ€(μ½κ° μμ μ²λ¦¬λ¨).
http --output subnet --pretty format --form post https://test.grid.domain.com/subnets cidr=10.124.33.128/25 name=Load_balancers description=Load_balancers availabilityZoneId=us-east-1c networkId=vpc-31433e7e x-gridauth-accesskey:DOYOUNEEDTOKNOW x-gridauth-secretaccesskey:WHATISWITHALLTHEQUESTIONS x-gridauth-accountid:11223344556677 _providerId=aws _regionId=us-east-1
μ΄ μ€λ₯λ HTTPieμ STDIN
κ° λ¦¬λλ μ
λκ³ λμμ μΈμ μ λ°μ΄ν°λ μ§μ λ λ λ°μν©λλ€.
$ echo 'data' | http POST example.org more=data # This is invalid
STDINμ μ ν 리λλ μ νμ§ μμ΅λλ€. λ€μμ μ€ν¬λ¦½νΈμ 컨ν μ€νΈμ λλ€.
cat keyfile | while read name az route cidr subnetid rest ; do
http --output subnet --pretty format --form post \
"${URLHOST}subnets" \
"cidr=${cidr}" \
"name=${name}" \
"description=${name}"\
"availabilityZoneId=${az}" \
"networkId=${VPCid}"\
"$ACCESSKEY" \
"$SECRETKEY"\
"$ACCOUNTID" \
"_providerId=aws" "_regionId=${REGION}"
(κ·Έλ° λ€μ 'μλΈλ·' νμΌμ ꡬ문 λΆμνκ³ λ€λ₯Έ μμ μ κ³μν©λλ€)
λ΄κ° ν μ μλ μΌμ μμ νλλ₯Ό http ν€λμ νΌν©νλ κ²μ λλ€. κ·Έλ¬λ μ λλ‘ μλνλλ‘ ν μ μμμ΅λλ€(STDINμ ν΅ν΄ μμ λ°μ΄ν°λ₯Ό νΈμνκ³ λ§€κ°λ³μλ‘ ν€λλ₯Ό νΈμνλ μΌλΆ μ‘°ν©... λλ STDINμ ν΅ν΄ ν€λ λ° μμ λ°μ΄ν° λ±).
λ¬Έμ λ 루ν 컨ν
μ€νΈμμ HTTPieκ° STDIN
(리λλ μ
λ¨)λ₯Ό μμνλ€λ κ²μ
λλ€.
HTTPieμ STDIN
λ₯Ό ν°λ―Έλ μ
λ ₯( < /dev/tty
)μΌλ‘ λ€μ λ³κ²½νμ¬ μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΄μΌ ν©λλ€.
cat file | while read line; do
http POST example.org a="$line" < /dev/tty
done
μ. μλν©λλ€. μ 루νμ λ΄λΆ λͺ λ Ήλ¬Έμ΄ μ£Όλ³ λ£¨νμ νμ€ μ λ ₯μ μμνλ€λ μ¬μ€μ μ ν λͺ°λμ΅λλ€.
λμμ μ£Όμ μ κ°μ¬ν©λλ€... μ€μ€λ‘ μ°Ύμμμ§ λͺ¨λ₯΄κ² μ΅λλ€.
(μ΄μ λλ μ (λλ λͺ¨λ SH νμ μμ κ°μ νκ³ μμ) κ·Έ λμμΈ μ νμνλμ§ κΆκΈν©λλ€ ... )
μ΄λμμλ μλνλ STDIN
μ½κΈ°λ₯Ό λΉνμ±ννλ μ΅μ
μ΄ μμ΄μΌ νλ€κ³ μκ°νλ―λ‘ μ΄ μ΅μ
μ μ΄μ΄λκ³ κΈ°λ₯μΌλ‘ νκ·Έλ₯Ό μ§μ ν©λλ€.
μ΄κ²μ λ§€μ° νΌλμ€λ½κ³ httpieκ° μ΄λμμλ μλν μ μλ κ²κ³Ό λ°λμ λλ€. bash 루ν λ΄μμ μ΄λ¬ν λͺ λ Ήμ μ¬μ©νλ κ²μ λ§€μ° μΌλ°μ μΈ μμ© νλ‘κ·Έλ¨μ λλ€. Httpieλ ν€/κ°μ΄ μ 곡λκ³ stdinμ μμ ν λ λΆνν΄μλ μ λ©λλ€. λμ ν€/κ°μ΄ μ°μΈν©λλ€.
Httpieλ ν€/κ°μ΄ μ 곡λκ³ stdinμ μμ ν λ λΆνν΄μλ μ λ©λλ€. λμ ν€/κ°μ΄ μ°μΈν©λλ€.
κ·Έκ²μ΄ λΉμ μκ²λ μ§κ΄μ μΌ μ μμ§λ§ λ§μ λ€λ₯Έ μ¬λλ€μκ²λ μ λ°λμ κ²μ΄ ν¨μ¬ λ μ§κ΄μ μ λλ€. λꡬλ μΆμΈ‘νλ €κ³ ν΄μλ μ λλ―λ‘ μ€λ₯λ₯Ό μ κΈ°νκ³ λ μ μκ³ μλ€κ³ μκ°λλ©΄ νμΆκ΅¬λ₯Ό μ 곡νλ κ²μ΄ ν¨μ¬ λ«μ΅λλ€. κ·Έλ κ² νλ©΄ λ©λλ€.
GNU λ³λ ¬ λ‘ μ λ¬λ ν¨μ λ΄μμ httpieλ₯Ό μ¬μ©ν λ μ΄ λ¬Έμ κ° λ°μνμ΅λλ€.
function call_api {
local FOO=`http --json --auth $TOKEN: post $HOST/api/foo name="Ε’αΊ½αΉ§αΊ" < /dev/tty | python3 -c "import json,sys;obj=json.load(sys.stdin);print(obj['result']['id']);"`
[β¦]
http --download --auth $TOKEN: GET $HOST/api/bla > /dev/tty
}
export -f call_api
export HOST=β¦
export TOKEN=β¦
parallel --env HOST --env TOKEN ::: call_api call_api call_api call_api call_api
μμ μ£Όμ λλΆμ λ³λ ¬ ν¨μ νΈμΆμ΄ μ΄μ μλν©λλ€. λμ€μ μ°Έκ³ ν μ μλλ‘ μ΄ λκΈμ λ¨κ²¨μ£ΌμΈμ π
λμ€μ μ°Έμ‘°ν μ μλλ‘ μμ² λ°μ΄ν°(key=value)κ° μμ² λ³Έλ¬Έ(stdinμμ)λ³΄λ€ μ°μ λμ΄μΌ ν¨μ HTTPieμ λͺ
μμ μΌλ‘ μ리λ λ° μ¬μ©ν μ μλ CLI μΈμ --ignore-stdin
κ° μμ΅λλ€.
http --ignore-stdin http://β¦ lorem=ipsum dolor=sit
μ°Έμ‘° https://httpie.org/docs#redirected -μ λ ₯
for 루νμμ http
λ₯Ό μ¬μ©νλ λμ μ΄ λ¬Έμ κ° λ°μνμ΅λλ€. λ‘컬μμλ μ μλνμ§λ§ gitlabμμλ μ€ν¨νμ΅λλ€. --ignore-stdin
λμ΄ ν΄κ²°νμ΅λλ€.
stdinμ null </dev/null
λ‘ λ¦¬λλ μ
νλ €κ³ μλνμ§λ§ httpieκ° μ΄μνκ² μλνμ΅λλ€. μ κ·Έλ? λ΄ λ§μ, λͺ
λ Ήμ΄ μ μ체μμ stdinμ 무μνλλ‘ νλ λ°©λ²μ΄ μμ΄μΌ νμ§ μκ² μ΅λκΉ?
@NightMachinary --ignore-stdin
μ΅μ
μ μ¬μ©νκ³ μΆμ΅λλ€. μ΄κ²μ΄ HTTPieμκ² STDIN
λ₯Ό μ½μ§ μλλ‘ μ§μνλ λ°©λ²μ
λλ€.
$ echo 'this STDIN data is ignored' | http --ignore-stdin POST httpbin.org/post hello=world
@jakubroztocil http
μ --ignore-stdin
$ μ΄ μμΌλ©΄ μ μ체μμ http
λ‘ κ°λ stdinμ μ΄λ»κ² μ κ±°ν μ μμ΅λκΉ?
@NightMachinary STDIN
(λ° κΈ°ν νμ€ μ€νΈλ¦Ό)μ μ κ±°ν μ μμ§λ§ λ«μ μλ μμ΅λλ€.
$ echo ignored data | http httpbin.org/anything 0<&-
https://superuser.com/questions/813472/how-do-i-close-stdin-in-a-shell-script
@NightMachinary μ /dev/null
리λλ μ
μ μ½κ° λ€λ¦
λλ€.
$ http httpbin.org/anything < /dev/null
μ΄κ²μ μ¬μ ν ββμ΄λ € μκ³ λ¦¬λλ μ
λ STDIN
λ‘ HTTPieλ₯Ό νΈμΆνλ―λ‘ HTTPieλ μ΄λ₯Ό μ½κ³ λΉ λ¬Έμμ΄λ‘ λλ©λλ€. κ·Έλ° λ€μ μμ² λ³Έλ¬Έ λ°μ΄ν°λ‘ ν볡νκ² μ¬μ©ν κ²μ
λλ€(ν¨κ³Όμ μΌλ‘ κΈ°λ³Έκ°μ POST
μ
λλ€. ), --ignore-stdin
λ‘ νμ§ λ§λΌκ³ νμ§ μλ ν.
λ°λΌμ κΈ°λ³Έμ μΌλ‘ λ€μκ³Ό λμΌν©λλ€.
$ echo -n | http httpbin.org/anything
κ°μ₯ μ μ©ν λκΈ
λμ€μ μ°Έμ‘°ν μ μλλ‘ μμ² λ°μ΄ν°(key=value)κ° μμ² λ³Έλ¬Έ(stdinμμ)λ³΄λ€ μ°μ λμ΄μΌ ν¨μ HTTPieμ λͺ μμ μΌλ‘ μ리λ λ° μ¬μ©ν μ μλ CLI μΈμ
--ignore-stdin
κ° μμ΅λλ€.μ°Έμ‘° https://httpie.org/docs#redirected -μ λ ₯