我有问题从我工厂的API控制器获得响应。
我收到错误找不到404页。
我在.js-file
中找到了正确的HTML-document
,路由似乎没问题。
App.js:
module.factory('userFactory', function($http) {
return {
getFormData: function(callback) {
$http.get('/api/GetMessage').success(callback);
}
}
});
module.controller("messageController", function($scope, userFactory) {
$scope.getMessage = function() {
userFactory.getFormData(function(results) {
$scope.text = results;
});
}
});
API-控制器:
using System.Web.Http;
namespace kittyChatt.Backend.Controllers {
public class GetMessageController : ApiController
{
public object Get()
{
object obj = "hello world";
return obj;
}
}
}
我希望你的世界显示我在视图中点按了一个按钮。
查看:
<div>
<button ng-click="getMessage()">Get my message</button>
<p>{{text}}</p>
</div>
Plz帮忙!
答案 0 :(得分:2)
return {
getFormData: function(callback) {
$http.get('/api/GetMessage/Get').success(callback);
}
}
你忘了告诉你想要打电话给你的控制器。
默认情况下,操作是HttpPost(是的,我知道,我写的是HttpGet,这是asp.net mvc中的情况),但是我建议你仍然用正确的方法装饰方法动词:
[HttpGet]
public object Get()
{
object obj = "hello world";
return obj;
}
编辑,与第一个问题完全没有关联:
引自asp.net文档:
但是,我仍然认为总是用动词装饰动作是一个好习惯。这种做法应该避免无用的讨论; - )
答案 1 :(得分:1)
api的路径路径是否正确?
在配置中你必须写下这样的东西:
public static void Register( HttpConfiguration config )
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional }
);
}