从一个 API 调用方法已完成,但在第二个 API 上面临 Not found 错误
Calling Methods from one API is done but facing Not found error on second API
我有两个 Wep API。我已经使用一个例如完成了 CRUD 操作。顾客。但是当我构建另一个 Similar Web API 并调用一个方法时它显示:
{,…} Message: "No HTTP resource was found that matches the request URI
http://localhost:23995/Product/Insert'."
MessageDetail: "No route providing a controller name was found to
match request URI '[[same link as above here]]'"
这是我的 JS 调用方法:
$scope.Insert = function () {
$http({
method: 'post',
url: 'http://localhost:23995/Product/Insert',
data: JSON.stringify($scope.Product)
}).then(function (response) {
alert("chec");
});
}
在产品控制器中
// Insert
[HttpPost]
[Route("{controller}/Insert")]
public string Insert([FromBody] Product newProd) {
newProd.Insert();
return newProd.DbResponse;
}
在供应商控制器中
// Insert
[HttpPost]
[Route("{controller}/Insert")]
public string Insert([FromBody] Product newProd) {
newProd.Insert();
return newProd.DbResponse;
}
你有一个名为 "ProductController" 的控制器和一个名为 Insert 的方法吗?
看来这就是您所缺少的。
假设您已经启用了属性路由。
Attribute Routing in ASP.NET Web API 2
To enable attribute routing, call MapHttpAttributeRoutes
during
configuration. This extension method is defined in the
System.Web.Http.HttpConfigurationExtensions
class.
using System.Web.Http;
namespace WebApplication
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
// Other Web API configuration not shown.
}
}
}
并假设给定的路线你在
上收到错误
http://localhost:23995/Product/Insert
您的产品控制器应该看起来像这样。
[RoutePrefix("product")]
public class ProductController : ApiController {
// ... other code removed for brevity
// Insert
// eg: POST /product/insert
[HttpPost]
[Route("insert")]
public string Insert([FromBody] Product newProd) {...}
}
你的供应商控制器看起来非常相似
[RoutePrefix("supplier")]
public class SupplierController : ApiController {
// ... other code removed for brevity
// Insert
// eg: POST /supplier/insert
[HttpPost]
[Route("insert")]
public string Insert([FromBody] Product newProd) {...}
}
你调用 JavaScript 然后应该能够正确调用所需的方法
我有两个 Wep API。我已经使用一个例如完成了 CRUD 操作。顾客。但是当我构建另一个 Similar Web API 并调用一个方法时它显示:
{,…} Message: "No HTTP resource was found that matches the request URI http://localhost:23995/Product/Insert'."
MessageDetail: "No route providing a controller name was found to match request URI '[[same link as above here]]'"
这是我的 JS 调用方法:
$scope.Insert = function () {
$http({
method: 'post',
url: 'http://localhost:23995/Product/Insert',
data: JSON.stringify($scope.Product)
}).then(function (response) {
alert("chec");
});
}
在产品控制器中
// Insert
[HttpPost]
[Route("{controller}/Insert")]
public string Insert([FromBody] Product newProd) {
newProd.Insert();
return newProd.DbResponse;
}
在供应商控制器中
// Insert
[HttpPost]
[Route("{controller}/Insert")]
public string Insert([FromBody] Product newProd) {
newProd.Insert();
return newProd.DbResponse;
}
你有一个名为 "ProductController" 的控制器和一个名为 Insert 的方法吗?
看来这就是您所缺少的。
假设您已经启用了属性路由。
Attribute Routing in ASP.NET Web API 2
To enable attribute routing, call
MapHttpAttributeRoutes
during configuration. This extension method is defined in theSystem.Web.Http.HttpConfigurationExtensions
class.
using System.Web.Http;
namespace WebApplication
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
// Other Web API configuration not shown.
}
}
}
并假设给定的路线你在
上收到错误http://localhost:23995/Product/Insert
您的产品控制器应该看起来像这样。
[RoutePrefix("product")]
public class ProductController : ApiController {
// ... other code removed for brevity
// Insert
// eg: POST /product/insert
[HttpPost]
[Route("insert")]
public string Insert([FromBody] Product newProd) {...}
}
你的供应商控制器看起来非常相似
[RoutePrefix("supplier")]
public class SupplierController : ApiController {
// ... other code removed for brevity
// Insert
// eg: POST /supplier/insert
[HttpPost]
[Route("insert")]
public string Insert([FromBody] Product newProd) {...}
}
你调用 JavaScript 然后应该能够正确调用所需的方法