gpt4 book ai didi

javascript - AngularJs:$http.post总是返回404错误

转载 作者:行者123 更新时间:2023-11-27 22:32:35 26 4
gpt4 key购买 nike

我目前正在尝试开发一个简单的 Angular js 应用程序。我正在尝试将数据从客户端发布到 Web api。但是,当我从 Angular 应用程序触发发布请求时,出现 404 错误。

以下是我的帖子请求,

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

其中 jsonData 是有效的 json 数据。

我的网络 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 并确保拼写正确。请求的 URL:/api/LoadApi/

谁能指出上面代码有什么问题吗?

它说网址有问题。生成的url为http://localhost:14154/api/LoadApi/看起来是正确的。

最佳答案

问题在于您的路线定义以及您如何尝试将数据发送到 Controller 方法。我建议使用基于属性的路由。在您的 Web API Controller 中执行以下操作:

[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);
}

确保 App_Start 中的 WebApiConfig.cs 具有如下所示的 Register() 方法:

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

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

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

关于javascript - AngularJs:$http.post总是返回404错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39420414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com