Python 如何在web2py中构建公开API

Python 如何在web2py中构建公开API,python,web2py,Python,Web2py,我试图构建另一个web服务调用的公开API,以便插入数据 Here is DB structure. Table name: bad_domain attributes are : domain(string) modified_by(string) cereated_by(string) risk(Boolean) 这是我在defauly.py中的代码 auth.settings.allow_basic_login = True @auth.requires_login() @reques

我试图构建另一个web服务调用的公开API,以便插入数据

Here is DB structure.
Table name: bad_domain
attributes are :
domain(string)
modified_by(string)
cereated_by(string)
risk(Boolean)
这是我在defauly.py中的代码

auth.settings.allow_basic_login = True

@auth.requires_login()
@request.restful()
def api():
    def POST(table_name,**vars):
    return db[table_name].validate_and_insert(**vars)
return locals()
这是我的卷发

curl --user test@gmail.com:1234 http://127.0.0.1:8000/test/default/api/bad_domain.json {"content": [{"domain": “www.google.com”,”modified_by”:”test”, "created_by": "test", "risk": True}]}
卷曲不起作用

你知道怎么修吗

我是web2py的新手


谢谢。

如果这是您的实际
curl
命令:

curl --user test@gmail.com:1234 http://127.0.0.1:8000/test/default/api/bad_domain.json {"content": [{"domain": “www.google.com”,”modified_by”:”test”, "created_by": "test", "risk": True}]}
那么你至少有五个问题:

  • 大多数shell都会尝试以某种方式解释JSON。它有嵌入的空格、大括号和方括号等等。用引号引出来
  • 即使您引用它,使它安然无恙地通过外壳,您也忘记了
    --data
    标志,因此
    curl
    将它视为另一个URL,而不是要发送的数据
  • 您没有告诉
    curl
    正确设置
    内容类型
  • 即使您已经过了这一关,所有像
    这样的智能引号字符就JSON而言都不是引号,因此您将发送服务器将拒绝的垃圾
  • True
    不是有效的JSON值;您可能想要
    True
  • 那么,让我们从这个开始:

    curl --user test@gmail.com:1234 http://127.0.0.1:8000/test/default/api/bad_domain.json --data '{"content": [{"domain": "www.google.com","modified_by":"test", "created_by": "test", "risk": true}]}' -H 'Content-Type: application/json'
    

    至少这会向服务器发送一些合理的内容,其主体可以被
    json.loads
    解析。无论这是您真正想要发送的内容,还是您的代码能够处理它,我不知道,但至少应该让您开始。

    什么是“不起作用”的意思?您期望发生什么?发生了什么?(请向我们展示实际的错误消息或输出,而不仅仅是含糊不清的描述。)数据不会进入DBDoes
    curl
    甚至不会运行并连接到服务器(您给我们的命令行不可能)如果是这样,服务器是否记录了任何内容?它是否向您的客户端返回了一些内容?此外,如果这是基于某个示例或框架,那么我们可以直接插入您的额外代码并运行它?如果不是,您能给我们一个完整的最小示例吗?