web api路由和http post [英] web api routing and http post

查看:37
本文介绍了web api路由和http post的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 WEB API 2 构建 API.

I'm building an API using WEB API 2.

我有以下 API 控制器:

I have the following API controller:

[RoutePrefix("api/account")]
public class AccountController : ApiController
{
    [Route("login")]
    [HttpPost]
    public IHttpActionResult AuthenticateUser(string username, string password)
    {
        if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
        {
            return BadRequest("You must submit username and password");
        }

        if (!Membership.ValidateUser(username, password))
        {
            return BadRequest("Incorrect username or password");
        }

        FormsAuthentication.SetAuthCookie(username, true);

        return Ok();
    }
}

和jquery函数:

<script>
    $(document).ready(function () {
        $("#login-form").submit(function (e) {
            e.preventDefault();

            var username = $('#username').val();
            var password = $('#password').val();

            $.ajax({
                type: 'POST',
                url: '/api/account/Login/',
                data: { username: username, password: password },
                success: function() {
                    location.reload();
                }
            });
        });
    });
</script>

当我提交登录表单时,我在 Chrome 浏览器的控制台中收到以下错误:

When I submit the login-form, I get the following error in Google Chrome's console:

POST http://localhost:60898/api/account/Login/ 404 (Not Found)

如何创建接受 HTTP POST 的路由?

How can I create a route that accepts HTTP POST?

谢谢!

推荐答案

抱歉,我没有看到这个帖子:WebAPI - 属性路由 POST 不适用于 WebAPI Cors?

I'm sorry, I didn't see this post: WebAPI - Attribute Routing POST not working with WebAPI Cors?

我已经像这样更新了我的 API 控制器:

I've updated my API controller like this:

[RoutePrefix("api/account")]
public class AccountController : ApiController
{
    public class LoginInfo
    {
        public string username { get; set; }
        public string password { get; set; }
    }

    [Route("login")]
    [HttpPost]
    public IHttpActionResult AuthenticateUser(LoginInfo loginInfo)
    {
        if (string.IsNullOrEmpty(loginInfo.username) || string.IsNullOrEmpty(loginInfo.password))
        {
            return BadRequest("You must submit username and password");
        }

        if (!Membership.ValidateUser(loginInfo.username, loginInfo.password))
        {
            return BadRequest("Incorrect username or password");
        }

        FormsAuthentication.SetAuthCookie(loginInfo.username, true);

        return Ok();
    }
}

现在一切正常.

这篇关于web api路由和http post的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆