【问题标题】:lagging with # and & in angular on http request在 http 请求上滞后于 # 和 & 在角度
【发布时间】:2018-03-01 12:55:18
【问题描述】:

# 和 & 在角度 http.get() 请求 URL 中的问题

请先看我的代码。

角度服务

let versionsearch ="&";
let strweeksearch="#";

this.http.get(this.apiUrl + 'GetVersionInfo?vehicleVersion=' + versionsearch + '&structureWeek=' + strweeksearch,
            { withCredentials: true })
            .map(responce => <CoCApiResponse[]>responce.json())
            .catch(error => {
                return Observable.throw(error);
            });

网络 API

  [HttpGet]
  public CoCApiResponse GetVersionInfo([FromQuery]string vehicleVersion, [FromQuery]string structureWeek)
        {
            //code
        }

解释和问题:

我在 Web API 中有一个 Get 方法,它有两个字符串参数。我只是通过传递这些参数的查询字符串从角度http 服务调用该休息服务。但特别是如果在查询字符串中传递的值为#&amp;,我会遇到以下问题。

使用#

如果我在查询字符串中传递#,API URL 将会中断。

但我从这个讨论中得到了一些想法:Passing a pound sign as a value in the query string of a URL, using Angular

所以我这样做是为了将 # 从角度服务替换为 %23,例如 strweeksearch.replace(/#/g, '%23');.


使用&amp;

API URL 会将其视为 3 个参数,例如

apiurl?versionsearch=&&strweeksearch=123455

所以 Web API 方法参数 vehicleVersion 总是得到 NULL


如何做到这一点?我不喜欢将每个特殊字符都替换为reserved characters。我需要在http.get() 中接受每个特殊字符。如何在 Angular 或 Web API 中处理这个问题?

【问题讨论】:

  • 您是否尝试使用传递给 .get() 的 config 对象的 params 属性来传递参数?见:AngularJS API: $http

标签: javascript angular typescript url asp.net-web-api


【解决方案1】:

您正在 get() 中添加版本搜索,并在字符串中附加 '&',这就是它认为您正在传递 3 个参数。

this.http.get(this.apiUrl + 'GetVersionInfo?vehicleVersion=' + versionsearch + 'structureWeek=' + strweeksearch,
            { withCredentials: true })
            .map(responce => <CoCApiResponse[]>responce.json())
            .catch(error => {
                return Observable.throw(error);
            });

尝试删除一个!

【讨论】:

    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      相关资源
      最近更新 更多