我正在尝试将一个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请求:
当我这样做时,我会得到HTTP 400(错误请求)&#39;背部。如果我停在Angular代码中的断点并将输入参数更改为一个简单的字符串(例如&#39; asdf&#39;),则进行REST调用,我看到Api被调用。如果我不更改字符串并在Get Api方法中放置断点,则不会到达断点,表明代码在路由引擎中的某处爆炸。
我不知道的是,在编码的时候,我试图传入的字符串仍应被视为字符串,对吗?我也尝试将输入更改为Uri,但这似乎不起作用(并且Uri并未列为支持的输入类型,无论如何)。
任何人都知道如何传递URL作为输入参数?
答案 0 :(得分:10)
您是否尝试使用查询字符串调用它?
var queryUrl = "/api/ProjectSite?id=" + encodeURIComponent(spUrl);