【问题标题】:Net Web API - How to pass a URL as input parameter on a GetNet Web API - 如何将 URL 作为输入参数传递给 Get
【发布时间】:2015-05-28 08:22:11
【问题描述】:

我正在尝试将 URL 作为输入参数从 Angular REST 调用传递给 ApiController。 URL 以查询字符串的形式出现(这是 SharePoint 中的提供商托管应用程序,我需要 URL 来查询 SP FWIW)。

这是 ApiController 中的方法签名:

// GET: api/ProjectSite/5
public IEnumerable<ProjectSite> Get(string id)
{
    return ProjectSite.GetAllProjectSites(id);
}

这是我在 Angular 中进行调用的地方:

var spUrl = "'" + getParameterByName("SPHostUrl") + "'";

var queryUrl = "/api/ProjectSite/" + encodeURIComponent(spUrl);
return $http.get(queryUrl);

这会生成一个如下所示的 GET 请求:

https://localhost:12345/api/ProjectSite/https%3A%2F%2Fcompany.sharepoint.com%2Fsites%2Fsite_dev%2Fweb

当我这样做时,我会返回“HTTP 400(错误请求)”。如果我在 Angular 代码中的断点处停止并将输入参数更改为简单的字符串(例如“asdf”),则会进行 REST 调用,并且我看到调用了 Api。如果我不更改字符串并在 Get Api 方法中放置断点,则未到达断点,表明代码在路由引擎中的某处发生故障。

我没有得到的是,虽然它被编码,但我试图传入的字符串仍应被视为字符串,对吧?我也尝试将输入更改为 Uri,但这似乎不起作用(无论如何,Uri 并未列为受支持的输入类型)。

有人知道如何将 URL 作为输入参数传递吗?

【问题讨论】:

    标签: asp.net-web-api asp.net-web-api-routing


    【解决方案1】:

    您是否尝试过使用查询字符串调用它?

    var queryUrl = "/api/ProjectSite?id=" + encodeURIComponent(spUrl);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-27
      • 2015-04-29
      • 2016-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      相关资源
      最近更新 更多