我有一个url调用,需要在向后端发出请求之前进行准备,有baseurl,但是有些url需要附加参数
需要添加到网址,例如servicetocall / additonalParam。现在它按预期工作,但问题是当我拥有属于URL的查询参数时
并采用多个值,例如,假设我将baseurl定义为servicetoCall?configlist=
,而我必须分配值login,validation
。
如果我发送这些值,它将显示为servicetoCall?configlist=/login,validation
,但在这种情况下,我不需要/
。如何进行检查和解决
这个问题?
main.ts
cont params = ["login,validation", "additonal param if needed"]
if (serviceName.params && serviceName.length > 0) {
serviceName.params.forEach((param) => {
baseConfig.Url += "/" + param.toString();
});
}
if(serviceName = "servicetoCall?configlist=") {
serviceName.params.forEach((param) => {
baseConfig.Url += param.toString();
});
}
答案 0 :(得分:0)
看看“ HttpClient GET”。 (或者POST或DELETE版本都非常相似)
您可以自己操纵网址,然后再调用
const url = 'myUrl?param1="Hello"¶m2="World"'
this.http.get(url)
这就是您现在正在做的事情。
或者您可以使用Angular对象并让Angular完成工作。
const url:string = 'myUrl';
const options = {
params: {
param1: 'Hello',
param2: 'World'
}
}
this.http.get( url, options);
这看起来像很多代码,但是也很清楚我们在做什么。显示您的意图。有一个固定的url部分,有一些参数...
最后但并非最不重要的是,您可以准备一个HttpRequest对象,并将其发送给
this.http.request( yourRequest );
但这只是我之前展示的版本的漫长的旅程。
仅需几句话,为什么我会选择一个单独的“选项”对象而不是一个全能的URL字符串呢? 如果将所有内容直接打包到字符串中,以后将很难操作。因此,如果这是一个非常简单的网址,则可以。一旦它变得有点复杂,或者您考虑“准备” URL供以后使用,我会立即在它周围包裹一些糖(HttpClient是您的朋友)。 这使您的代码更具可读性,并且可以轻松对其进行测试
热烈的问候