如何安全地连接API请求URL
让我们想象一下,我有一个URL的以下部分:如何安全地连接API请求URL,url,kotlin,concatenation,Url,Kotlin,Concatenation,让我们想象一下,我有一个URL的以下部分: val url_start = "http://example.com" val url_part_1 = "&fields[...]&" //This part of url can be in the middle of url or in the end val url_part_2 = "&include..." 然后我尝试将结果URL连接起来,如下所示: val complete_url = url_start +
val url_start = "http://example.com"
val url_part_1 = "&fields[...]&" //This part of url can be in the middle of url or in the end
val url_part_2 = "&include..."
然后我尝试将结果URL连接起来,如下所示:
val complete_url = url_start + url_part_2 + url_part_1
val complete_url = url_start + url_part_1 + url_part_2
在这种情况下,我会得到http://example.com&include...&fields[/]和(不要在这里考虑语法),这是URL部分之间的一个<代码>和<代码>符号,这意味着级联是成功的,如果在不同的请求中使用不同的CONTAT序列:<强>但是< /强>:
val complete_url = url_start + url_part_2 + url_part_1
val complete_url = url_start + url_part_1 + url_part_2
我会得到http://example.com&fields[…]&&include…
,在本例中具体为&&
。有没有办法确保连接更安全?要保持代码干净,请使用数组或对象来保留参数,而不要将“?”或“&”作为urlStart或PARAM的一部分。将这些添加到末尾。e、 g
var urlStart = "http://example.com"
var params=[]
params.push ('a=1')
params.push ('b=2')
params.push ('c=3', 'd=4')
url = urlStart + '?' + params.join('&')
console.log (url) // http://example.com?a=1&b=2&c=3&d=4
要保持代码整洁,请使用数组或对象保留参数,而不要将“?”或“&”作为urlStart或参数的一部分。将这些添加到末尾。e、 g
var urlStart = "http://example.com"
var params=[]
params.push ('a=1')
params.push ('b=2')
params.push ('c=3', 'd=4')
url = urlStart + '?' + params.join('&')
console.log (url) // http://example.com?a=1&b=2&c=3&d=4
首先,您应该注意,在域名后面有查询参数是无效的;它应该类似于http://example.com/?include...&fields[…]
(请注意/?
部分,您可以将其替换为/
,使其成为路径参数,但网站的路由器不太可能支持这样的参数)。例如,请参阅本文:了解关于哪些URL可以有效的更多信息
对于简单的抽象方法,您可以使用Kotlin的:
这种方法是抽象的,因为您不仅可以对URL使用joinToString()
,还可以对您想要的任何字符串使用。这也意味着,如果在一个输入字符串本身中有一个&
符号,它将成为输出字符串中的两个参数。作为程序员,当您知道将连接哪些字符串时,这不是问题,但如果这些字符串是由用户提供的,则可能会成为问题
对于URL感知方法,您可以使用from library,但您需要首先导入此库。首先,您应该注意,在域名之后添加查询参数是无效的;它应该类似于http://example.com/?include...&fields[…]
(请注意/?
部分,您可以将其替换为/
,使其成为路径参数,但网站的路由器不太可能支持这样的参数)。例如,请参阅本文:了解关于哪些URL可以有效的更多信息
对于简单的抽象方法,您可以使用Kotlin的:
这种方法是抽象的,因为您不仅可以对URL使用joinToString()
,还可以对您想要的任何字符串使用。这也意味着,如果在一个输入字符串本身中有一个&
符号,它将成为输出字符串中的两个参数。作为程序员,当您知道将连接哪些字符串时,这不是问题,但如果这些字符串是由用户提供的,则可能会成为问题
对于URL感知方法,可以使用“从库”,但需要先导入此库。不要这样做。存储一个集合并在发出请求时加入它们。不要这样做。存储集合并在发出请求时加入它们。