提供URL $ http.get / .post的最佳方式

时间:2014-01-09 12:04:37

标签: angularjs asp.net-mvc-4 url relative-path angular-http

我正在使用角度与MVC4。我想使用$ http.get()从javascript调用MVC控制器方法。它需要一个网址(显然)。我希望这是一个相对的路径,但我该怎么写呢?我的控制器在Controllers / Api / ExampleController中。即使我将javascript文件移动到另一个位置,我也想要解决该路径,这意味着我希望路径相对于应用程序根目录而不是javascript文件。我试过"〜/ Controllers / Api / ExampleControllerMethod"和"控制器/ Api / ExampleController /方法。

3 个答案:

答案 0 :(得分:3)

$location服务确实提供了来自网址的信息。因此,您可以构造一些东西,然后使主机和端口动态化:

var url = $location.host() + '/Controllers/Api/ExampleControllerMethod';

来自文档:

**url: http://www.example.com/base/path?a=b#h**
$location.protocol() = http
$location.host() = www.example.com
$location.port() = 80
$location.path() = /path
$location.search() = {"a":"b"}
$location.hash() = h

答案 1 :(得分:1)

感谢您的想法,但这种事情正是我所寻求的:

配置WebApiConfig以添加类似的路由(默认情况下应该这样):

config.Routes.MapHttpRoute(
            name: "ApiMethods",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

所以现在我可以去$ http.get('api / {controller} / {method}')

答案 2 :(得分:1)

对我有用的是将Url提供为“/ ControllerName / Action”(而不是“ControllerName / Action”)