Пытаюсь настроить asp.net mvc + angularjs приложение. Столкнулся с проблемой, то не могу настроить web api логику. Любые запросы на бэкенд возвращают 404 not found.
Пример метода клиентской части:
$scope.test = function () {
$http.post('/api/Test', "some string")
.then(function (response) {
console.log("Success");
}, function () {
console.log("Failure");
});
}
Бэкенд:
[HttpPost]
[Route("api/Test")]
public void Test(string str) {
var a = str;
}
Также добавлял RoutePrefix на уровне контроллера, но это ситуацию не исправило. Буду признателен, если подскажете где я допустил ошибку.
namespace xmlReader.Controllers {
public class HomeController : Controller {
[HttpPost]
[Route("api/Test")]
public string Test(string str) {
return str;
}
}
namespace webappang
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
namespace webappang {
public class RouteConfig {
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
Проблема номер раз, вы хотите иметь API, но используете для этого обычный контроллер. Если вы хотите писать API, но наследуйтесь от ApiController
public class TestController : ApiController
{
[HttpPost]
[Route("api/Test")]
public string Index([FromBody] string str)
{
var a = str;
return a;
}
}
Проблема два - вы хотите принимать чисто строку как параметр. Вы можете это сделать, но это немного сложнее, чем принимать Json. Во первых вам понадобится аттрибут [FromBody], по вторых вам придется начинать переданную строку со знака =, например =TestMessage.
Результат
Сборка персонального компьютера от Artline: умный выбор для современных пользователей