Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何安全地连接API请求URL_Url_Kotlin_Concatenation - Fatal编程技术网

如何安全地连接API请求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 +

让我们想象一下,我有一个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 + 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感知方法,可以使用“从库”,但需要先导入此库。

不要这样做。存储一个集合并在发出请求时加入它们。不要这样做。存储集合并在发出请求时加入它们。