我未能从下面的代码获得任何响应。我尝试了不同的“内容类型”,尝试以各种不同的方式构建我的json。请帮忙。
@app.route('/api/v1/client', methods={'GET', 'POST'})
def client():
if request=='post':
req = request.get_data()
data = req.json
user_id = data["data"]["attributes"]["user_id"]
redirect_uri = data["data"]["attributes"]["_redirect_uris"]
default_scopes = data["data"]["attributes"]["_default_scopes"]
item = Client(
client_id=gen_salt(40),
client_secret=gen_salt(55),
_redirect_uris=' '.join(redirect_uri),
_default_scopes=' '.join(default_scopes),
user_id=user_id,
allowed_grant_types=' '.join(['implicit', ]),
allowd_response_types=' '.join(['token', ])
)
db.session.add(item)
db.session.commit()
resp = {
"data":{
"attributes":{
"client_id" : "client id",
"client_secret" : "client_secret"
},
"jsonapi":{
"version" : "1.0"
},
"type":"client"
}
}
resp["data"]["attributes"]["client_id"] = item.client_id
resp["data"]["attributes"]["client_secret"]= item.client_secret
status = 200
return (jsonify(resp), status, {"Content-type":"application/vnd.api+json"})
请帮帮我!我必须做一些完全错误的事情。但是一个非常相似的代码正在另一个函数中工作。 我得到的错误是“ValueError:View函数没有返回响应// Werkzeug Debugger”。
答案 0 :(得分:0)
首先,如果您想检查请求是否是通过POST发送的,则应使用if request.method == 'POST':
代替if request == 'POST':
。
如果您想获取请求的JSON正文,则应使用request.get_json()
。
其余的工作似乎很好,但我建议您在做某事之前阅读完整的Flask文档。