Net Web API - 如何将 URL 作为输入参数传递给 Get
Net Web API - How to pass a URL as input parameter on a Get
我正在尝试将 URL 作为输入参数从 Angular REST 调用传递给 Api 控制器。 URL 作为查询字符串出现(这是 SharePoint 中的提供商托管应用程序,我需要 URL 来查询 SP FWIW)。
这是Api控制器中的方法签名:
// 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 请求:
当我这样做时,我会 'HTTP 400 (Bad Request)' 回来。如果我在 Angular 代码中的断点处停止并将输入参数更改为简单字符串(例如 'asdf'),则会进行 REST 调用,我会看到 Api 被调用。如果我不更改字符串并在 Get Api 方法中放置一个断点,则未到达断点,表明代码在路由引擎中的某处爆炸。
我不明白的是,虽然它已编码,但我尝试传入的字符串仍应被视为字符串,对吗?我还尝试将输入更改为 Uri,但这似乎不起作用(无论如何 Uri 未列为受支持的输入类型)。
有人知道如何将 URL 作为输入参数传递吗?
您是否尝试过使用查询字符串调用它?
var queryUrl = "/api/ProjectSite?id=" + encodeURIComponent(spUrl);
我正在尝试将 URL 作为输入参数从 Angular REST 调用传递给 Api 控制器。 URL 作为查询字符串出现(这是 SharePoint 中的提供商托管应用程序,我需要 URL 来查询 SP FWIW)。
这是Api控制器中的方法签名:
// 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 请求:
当我这样做时,我会 'HTTP 400 (Bad Request)' 回来。如果我在 Angular 代码中的断点处停止并将输入参数更改为简单字符串(例如 'asdf'),则会进行 REST 调用,我会看到 Api 被调用。如果我不更改字符串并在 Get Api 方法中放置一个断点,则未到达断点,表明代码在路由引擎中的某处爆炸。
我不明白的是,虽然它已编码,但我尝试传入的字符串仍应被视为字符串,对吗?我还尝试将输入更改为 Uri,但这似乎不起作用(无论如何 Uri 未列为受支持的输入类型)。
有人知道如何将 URL 作为输入参数传递吗?
您是否尝试过使用查询字符串调用它?
var queryUrl = "/api/ProjectSite?id=" + encodeURIComponent(spUrl);