具有身份验证的Restful API

时间:2016-07-04 13:11:55

标签: web2py

我尝试为我的web2py应用程序构建一个API。

# -*- coding: utf-8 -*-
auth.settings.allow_basic_login = True

@auth.requires_login()
@request.restful()
def api():
    response.view = 'generic.json'

    def GET(tablename, id):
        if not tablename == 'division':
            raise HTTP(400)


        result = db(db.division.title == id).select()

        return dict(result = result)

return locals()

但是每当我尝试通过curl连接时,我得到了这个答案:

You are being redirected <a href=\"/my_manager/login?_next=/my_manager/api/get_all_divisions/1.json\">here</a>

当我注释掉这一行时

@auth.requires_login()

everythink工作得很好。

我已经搜索过提示,但到目前为止没有找到任何有关此主题的有用信息。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我知道这是一个非常古老的问题,但这个答案仍然可以帮助其他可能遇到同样问题的人:

在您的情况下,您正在使用需要用户登录的@auth.requires_login()

因此,您需要在调用此api时发送基本身份验证凭据。

最简单的卷曲调用可以是:

curl --user abc@example.com:abc123 http://localhost:8000/app_name/default/api/table_name.json

下面:

  • abc@example.com是用户名
  • abc123是密码
  • app_name是web2py的应用名称
  • table_name是db
  • 中的表名