Web Api 2 -如何从$http调用发送属性到控制器(属性路由)
本文关键字:属性 控制器 路由 调用 http Api Web | 更新日期: 2023-09-27 18:14:31
我有这个$http调用:
$http({
method: 'GET',
url: '/api/PhotoSubmit/GetCategories',
accept: 'application/json'
})
.success(function (result) {
$scope.categories = result;
});
…它需要将参数发送给这个HTTPGET方法:
[Route("api/PhotoSubmit/GetCategories/{id}")]
[HttpGet]
public object GetCategories(int id)
{
return FileServices.GetCategoriesForUser().Select(c => new { Id = c.Id, Name = c.Name });
}
路由工作,我只是不确定如何通过angular/javascript访问它发送到控制器(或…在$http调用
中,路由调用应该是什么样子?这是URL:
http://localhost:63203/Index.html#/photosubmit/1
我确信$http是类似的,但我在工厂中使用$resource来命中我的web api端点。
在services.js,我有:
var app = angular.module('app.service', ['ngResource']);
app.factory('api', ['$resource', function ($resource) {
'use strict';
return {
Categories: $resource('/api/PhotoSubmit/GetCategories/:id', {id: '@id'})
};
}]);
然后在我的控制器中,我用
$scope.categories = api.Categories.get({id:"1"});
如果你真的想开始玩,你可以等待结果返回后使用$promise的数据。
api.Categories.get({id:"1"})
.$promise
.then(function (results){
$scope.categories = results;
});
更新:为了将变量放入$routeParams中,我做了以下操作(记住,这是我的第一个angular应用,所以有更好的方法来编写它)
在我的应用程序。配置,我有以下代码来创建id参数:
$routeProvider
...
.when('photosubmit/:id', {
templateUrl: "photo.html",
controller: "PhotoController"
})
.otherwise({ redirectTo: '/' });
然后,我得到控制器$scope.$routeParams = $routeParams;
中的参数
我必须在顶部这样做,这样它就不会丢失或未定义。
$scope.$routeParams.id
Id可以通过url本身传递。
url: '/api/PhotoSubmit/GetCategories/1',
或者你也可以在参数中传递。
$http({
url: '/api/PhotoSubmit/GetCategories',
method: "GET",
params: {id: 1}
});