AngularJs: $ http.Post总是返回404错误

AngularJs: $http.post always return 404 error

本文关键字:返回 错误 Post http AngularJs      更新时间:2023-09-26

我目前正在尝试开发一个简单的angular js应用程序。我试图从客户端到web api发布数据。然而,当我从angular应用程序中触发post请求时,我得到404错误。

下面是我的帖子请求,

 $http.post('/api/LoadApi/', jsonData).then(function (result) {
                console.log(result.data);
            })
           .catch(function (error) {
           });

其中jsonData是一个有效的json数据。

我的web api代码是这样的

public class LoadApiController : ApiController
{
    [HttpPost]
    public HttpResponseMessage LoadData(object dataToLoad)
    {
        var response = Request.CreateResponse(HttpStatusCode.Created);
        return response;
    }
}

我的web api路由配置是这样的,

config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{dataToLoad}"
            );
然而,当我运行代码时,它抛出了一个错误

'/'应用程序服务器错误。找不到资源。描述:HTTP 404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下网址,并确保拼写正确。请求的URL:/api/LoadApi/

谁能指出上面代码的问题是什么?

显示url有问题。生成的url是http://localhost:14154/api/LoadApi/,看起来是正确的。

问题在于您的路由定义以及您如何尝试将数据发送到控制器方法。我建议使用基于属性的路由。在你的Web API控制器中这样做:

[RoutePrefix("api/LoadApi")]
public class LoadApiController : ApiController
{
    [HttpPost]
    [Route("loadData")]
    public HttpResponseMessage LoadData(object dataToLoad)
    {
        var response = Request.CreateResponse(HttpStatusCode.Created);
        return response;
    }
}

Global.asax.cs中的Application_Start()方法修改为:

protected void Application_Start()
{
    GlobalConfiguration.Configure(WebApiConfig.Register);
}

确保WebApiConfig.csApp_Start中有这样的Register()方法:

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();
}

最后将$http.post调用更改为:

$http.post('/api/LoadApi/loadData', jsonData).then([...]);