如何使用Angularjs控制器从ASP.NET ApiController调用特定的get方法?

时间:2016-11-26 15:37:53

标签: asp.net angularjs asp.net-web-api http-get

我有一个包含多个GET方法的ApiController类。

    //method 1   
    public IEnumerable<Drive> GetProducts()
    {
                  ...
    }

    //method2
    public IEnumerable<string> GetCustomer(string name)
    {
                  ...
    }

    //method3
    public IEnumerable<string> GetCustomers()
    {
                  ...
    }

这是我的angularjs脚本

var app = angular.module("MyApp", []);
app.controller("MyController", function ($scope, $http) {
    $http.get('http://localhost:53551/api/values/GetProducts').
        success(function (data, status, headers, config) {
            $scope.strings = data;
        }).
        error(function (data, status, headers, config) {
            alert("sa");
        });
    debugger;
    $scope.open = function (name) {
        debugger;
        $http.get('http://localhost:53551/api/values/GetCustomer?' + name ).
            success(function (data, status, headers, config) {
                $scope.strings = data;
            })
    };
    });

所有函数仅调用GetProducts()。但我想每次都打电话给一个特定的人。 是否可以通过ApiControler的angularjs调用特定的GET方法?

1 个答案:

答案 0 :(得分:2)

如果您将DefaultWebAPI路由注册如下

routes.MapHttpRoute(
    name: "API Default",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

然后您只需要调用方法名称/api/controllerName/actionName(不需要在操作名称中提及HttpVerb)。每个操作名称前面的前缀表示Action的性质。我假设你ValuesController有上述所有行为。

http://localhost:53551/api/values/customer
http://localhost:53551/api/values/products
http://localhost:53551/api/values/customers