我有一个api服务器支持这种格式的url
api.add_resource(Component, '/mycustom-url/<string:text>',
methods=['GET'])
我需要支持它与curl一起使用
字符串可能是阿拉伯语,所以我们需要在使用curl发送之前使用urlencode。我想直接通过curl命令来完成。
在文档中,我可以看到使用-d查询字符串
curl -d "name=curl" https://example.com
是否有一种方法可以将其用于完整的urlencode或最后一个参数部分?
eg:我想能够调用curl https://example.com/mycustom-url/عربي.
没有url编码,然后通过curl发送长编码?
假设您有以下PHP脚本(名为:test.php):
<?php
echo "GET:";
var_dump($_GET);
然后:
curl -G --data-urlencode "name=%E2%82%AC" http://localhost/test.php?name2=%E2%82%AC
会产生:
GET:array(2) {
["name2"]=>
string(3) "€"
["name"]=>
string(9) "%E2%82%AC"
}
- 您看到
name
没有被urldecoded,name2
被urldecoded。 - 字符
%E2%82%AC
表示未编码的€
字符
结论:你仍然需要urlencode字符串…
我发现这个问题的解决方案是将阿拉伯字符串放在"并在url
中添加空格。
curl https://example.com/mycustom-url/" عربي"
这样,bash将把字符串解释为url的一部分,并将字符串连接到url。它将隐式地以url编码发送,并且api将成功接收它。