如何在MVC 4上的RESTful站点上导航到Post

时间:2012-04-27 08:41:56

标签: asp.net-mvc

我试图在MVC 4上使用RESTful来给我一个我可以在WP / Android / Iphone上使用的API,所以对于初学者来说(这个方法将在以后重新制作,这仅用于测试目的)< / p>

我有一个WP应用程序与服务器通信并向它发送一个json对象并使用restclient接收一个json对象

        RestClient client = new RestClient();
        client.BaseUrl = "http://*****.***/API/Account/Login";

        RestRequest request = new RestRequest();
        request.Method = Method.POST;
        request.RequestFormat = DataFormat.Json;

        User user = new User
        {
            UserName = "muhcow",
            Password = "123456"
        };

        request.AddBody(user);

        client.ExecuteAsync(request, response => {
            System.Diagnostics.Debug.WriteLine("jo");
        });

然后我有我的服务器代码,我首先尝试制作一个普通的控制器,然后只是制作一个名为account的控制器和一个名为login的动作,使用一个httppost,并且工作正常,但从我能读到的不是通往做好休息!

所以我尝试将控制器继承自apicontroller,但现在我遇到的问题甚至被路由到LoginController中的Post动作

所以post在Domain \ API \ Login \ LoginController

后期行动就是这样

    public string Post(Login loginModel)
    {
        LoginResponse loginResponse = new LoginResponse();
        if (Membership.ValidateUser(loginModel.UserName, loginModel.Password))
        {
            loginResponse.Success = true;
            loginResponse.Token = "11111111111111111";

            return Json.Encode(loginResponse);
        }

        loginResponse.Success = false;
        loginResponse.Error = 1;
        return Json.Encode(loginResponse);
    }

但是当前代码未被命中(使用断点检查)

我还没有改变MapRoute,所以只是

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "API_default",
            "API/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }

1 个答案:

答案 0 :(得分:1)

简短的回答是,您需要使用RouteCollectionExtensions设置ApiController特定路线,就像这样(而不是您拥有的路线):

context.Routes.MapHttpRoute(
   name: "API_default",
   routeTemplate: "API/{controller}/{action}/{id}",
   defaults: new { action = "Index", id = RouteParameter.Optional}
);

只是快速说明“不是做REST的方式”评论 - 这实际上是一个非常热门的话题。我不会过分担心你RESTful是怎样的。考虑RESTful架构有助于解决的问题,看看它是否符合您要解决的问题(以及您希望采用这些原则的程度)。

那里有很多很棒的文献,但是我发现Martin Fowler的this post特别有助于我解决它。