Javascript JS:如何在URL中保留空间

Javascript JS:如何在URL中保留空间,javascript,angular,url,Javascript,Angular,Url,我使用Angular 4,在我的服务中,我有一个delete api,其中有两个字符串作为参数,如下所示 this.http.delete(this.url + 'api/v1/ReportingService/collectionID/'+ '45902' +'/'+'ReportName/' + 'my report 2012:21:24.810419' + '/DeleteReport', { headers: this.headers }) .map(this.extractRe

我使用Angular 4,在我的服务中,我有一个delete api,其中有两个字符串作为参数,如下所示

this.http.delete(this.url + 'api/v1/ReportingService/collectionID/'+ '45902' +'/'+'ReportName/' + 'my report 2012:21:24.810419' + '/DeleteReport', { headers: this.headers })
    .map(this.extractResponse)
    .catch(this.handleError);
报表名称param包含空格。我知道url不能有空格。当我调用api时,空间被%20替换。因此,我尝试用“”替换空格,用20替换空格,两种方法都是这样。但我必须保留空格,因为报告名将存储在数据库中,并带有空格,所以我必须在api中有空格。
如何解决此问题?

百分比编码是描述统一资源标识符(URI)语法的一部分。在将字符串插入数据库之前,您需要接受它并在服务器端对其进行解码

如果服务器端是使用JavaScript实现的,那么您可以使用字符串上的函数

decodeURI('a%20b%20c') // result: 'a b c'
所有服务器端语言都具有类似的功能,例如:

  • .NET:
  • 爪哇:
  • PHP:
  • Python:
  • 红宝石:

您必须在应用程序的后端/API端对其进行解码。或者在post请求中,在正文中发送此参数,而不是使用get。如果不能,则需要使用代码
%20
,或者使用类似下划线的内容