2024-04-25 22:05:46 发布
网友
我有一个url,我需要添加一个api密钥作为参数。密钥中有%和其他字符,不应该是url编码的,有没有办法用furl来实现这一点?在
这是我当前的代码:
request_url = furl('http://www.domain.com/service/') \ .add({ 'format' : 'json', 'location' : address_line_1 + ',' + city + ',' + state, 'key' : APP_KEY }).url
I have a url that I need to add an api key to as a parameter. The key has % and other characters in it and should not be url encoded
那不可能是真的。它必须是URL编码的。否则,您将得到一个无效的URL,或者一个不代表您想要的URL。在
例如,假设键是123%456%789。如果发送http://www.domain.com/service/?format=json&key=123%25456%25789,另一端的web服务将得到123%456%789,这将成功。如果您只发送http://www.domain.com/service/?format=json&key=123%456%789,另一端的web服务将得到123E6x9,这将失败。在
123%456%789
http://www.domain.com/service/?format=json&key=123%25456%25789
http://www.domain.com/service/?format=json&key=123%456%789
123E6x9
所以,你的例子已经是正确的,你不应该做任何事情。在
如果出于某种原因,你在到达这里之前已经在进行URL编码APP_KEY那么,就不要了。用这样的名称,我猜它是一个常量文本刚刚复制并粘贴到模块中,这意味着你必须手动对其进行URL编码并复制并粘贴结果。别这样,你就没事了。在
APP_KEY
如果您得到的APP_KEY是URL编码的形式,那么您总是可以用urlparse.parse_qs,甚至是furl来解码。在
urlparse.parse_qs
furl
但如果这些都不合理
is there a way to do this with furl?
不。请参阅文档的Encoding部分。furl只对解码的查询字符串名称和值有效。在
但是有一个简单的方法来解决这个问题。URL并不是一件复杂的事情,furl是专门设计来允许您混合和匹配手动和编程创建的位。README中的大多数示例都正好显示了这一点,例如furl('http://www.google.com/?one=1').add({'two':2}).url。因此,如果您已经从某个地方得到了一个预编码的"key=123%25456%25789",那么在将其交给furl之前,只需手动将其粘贴在字符串上:
furl('http://www.google.com/?one=1').add({'two':2}).url
"key=123%25456%25789"
request_url = furl('http://www.domain.com/service/?key={}'.format(APP_KEY)) \ .add({ 'format' : 'json', 'location' : address_line_1 + ',' + city + ',' + state, }).url
哈奇?好吧,是的,因为你在回避furl的编码,但这正是你要问的问题。在
那不可能是真的。它必须是URL编码的。否则,您将得到一个无效的URL,或者一个不代表您想要的URL。在
例如,假设键是
123%456%789
。如果发送http://www.domain.com/service/?format=json&key=123%25456%25789
,另一端的web服务将得到123%456%789
,这将成功。如果您只发送http://www.domain.com/service/?format=json&key=123%456%789
,另一端的web服务将得到123E6x9
,这将失败。在所以,你的例子已经是正确的,你不应该做任何事情。在
如果出于某种原因,你在到达这里之前已经在进行URL编码
APP_KEY
那么,就不要了。用这样的名称,我猜它是一个常量文本刚刚复制并粘贴到模块中,这意味着你必须手动对其进行URL编码并复制并粘贴结果。别这样,你就没事了。在如果您得到的
APP_KEY
是URL编码的形式,那么您总是可以用urlparse.parse_qs
,甚至是furl
来解码。在但如果这些都不合理
不。请参阅文档的Encoding部分。
furl
只对解码的查询字符串名称和值有效。在但是有一个简单的方法来解决这个问题。URL并不是一件复杂的事情,
furl
是专门设计来允许您混合和匹配手动和编程创建的位。README中的大多数示例都正好显示了这一点,例如furl('http://www.google.com/?one=1').add({'two':2}).url
。因此,如果您已经从某个地方得到了一个预编码的"key=123%25456%25789"
,那么在将其交给furl
之前,只需手动将其粘贴在字符串上:哈奇?好吧,是的,因为你在回避
furl
的编码,但这正是你要问的问题。在相关问题 更多 >
编程相关推荐