我是shell脚本的新手。
我试图在我的shell脚本中使用这样一个curl请求。
curl -X POST --header "Content-Type: application/json" --header "Accept: */*" "http://localhost:8080/api/rest/v1/category/p1/{id}?id=${a}&name=${b}&typecode=${c}
其中$ a或$ b或$ c可能包含由于卷曲请求失败而被空格分隔的单词。
答案 0 :(得分:2)
您还应该能够让curl使用--data-urlencode
在查询字符串中为您完成编码空间和其他特殊字符的工作,同时添加-G
使其成为网址的一部分:
curl --header "Content-Type: application/json" --header "Accept: */*" \
"http://localhost:8080/api/rest/v1/category/p1/{id}" \
--data-urlencode id="${a}" \
--data-urlencode name="${b}" \
--data-urlencode typecode="${c}" \
-G -X POST
通过设置a='a a' b='b b' c='a&b&c'
并添加-v
进行测试。你得到标题:
POST /api/rest/v1/category/p1/id?id=a%20a&name=b%20b&typecode=a%26b%26c HTTP/1.1
顺便说一句,{}
应该在网址中编码,因此curl已将其删除。
答案 1 :(得分:1)
您可以使用:
curl -X POST --header 'Content-Type: application/json' --header 'Accept: */*' \
"http://localhost:8080/api/rest/v1/category/p1/{id}?id=${a// /%20}&name=${b// /%20}&typecode=${c// /%20}"
${a// /%20}
(类似于$b
和$c
)将%20
(编码空间)替换所有空格,以便您的其余API正确获取所有参数值。< / p>