不能 POST 因为我缺少参数
Can't POST because I'm missing arguments
我是 Python 的新手,甚至是 Flask RESTful 的新手。我正试图降低我的路线,但我遇到了 POST
ing 问题。我在使用 Postman 说 "TypeError: post() missing 3 required positional arguments: 'username', 'avatar', and 'friend_code'" 时出错,但我的 POST
请求正文中确实有这些参数。
下面是我的代码。我只想从根目录 POST
。
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
users = []
class User(Resource):
def get(self, username):
# /<username>
for user in users:
if user['username'] == username:
return user
def post(self, username, avatar, friend_code):
# / root
user = {'username': username, 'avatar': avatar,
'friend_code': friend_code}
users.append(user)
return user
api.add_resource(User, '/', '/<string:username>')
app.run(debug=True)
您的 post
方法需要 3 个参数 username, avatar, friend_code
。
当您执行 api.add_resource(User, '/', '/<string:username>')
时,您只传递一个参数(用户名)。那么,另外两个(avatar & friend_code)呢?
要么将它们硬编码为您的 post 方法始终可以选择的一些常量值,要么使用 reqparse
从有效载荷的主体中解析它们。
大致是这样的:
from flask_restful import Resource, Api, reqparse
parser = reqparse.RequestParser()
def post(self):
parser.add_argument('avatar', type=str)
parser.add_argument('friend_code', type=str)
args = parser.parse_args()
user = {'username': username, 'avatar': avatar,
'friend_code': friend_code}
users.append(user)
return user
下面是一个不错的 link 帮助您入门 Building Basic RESTful API with Flask-RESTful。
我是 Python 的新手,甚至是 Flask RESTful 的新手。我正试图降低我的路线,但我遇到了 POST
ing 问题。我在使用 Postman 说 "TypeError: post() missing 3 required positional arguments: 'username', 'avatar', and 'friend_code'" 时出错,但我的 POST
请求正文中确实有这些参数。
下面是我的代码。我只想从根目录 POST
。
from flask import Flask
from flask_restful import Resource, Api
app = Flask(__name__)
api = Api(app)
users = []
class User(Resource):
def get(self, username):
# /<username>
for user in users:
if user['username'] == username:
return user
def post(self, username, avatar, friend_code):
# / root
user = {'username': username, 'avatar': avatar,
'friend_code': friend_code}
users.append(user)
return user
api.add_resource(User, '/', '/<string:username>')
app.run(debug=True)
您的 post
方法需要 3 个参数 username, avatar, friend_code
。
当您执行 api.add_resource(User, '/', '/<string:username>')
时,您只传递一个参数(用户名)。那么,另外两个(avatar & friend_code)呢?
要么将它们硬编码为您的 post 方法始终可以选择的一些常量值,要么使用 reqparse
从有效载荷的主体中解析它们。
大致是这样的:
from flask_restful import Resource, Api, reqparse
parser = reqparse.RequestParser()
def post(self):
parser.add_argument('avatar', type=str)
parser.add_argument('friend_code', type=str)
args = parser.parse_args()
user = {'username': username, 'avatar': avatar,
'friend_code': friend_code}
users.append(user)
return user
下面是一个不错的 link 帮助您入门 Building Basic RESTful API with Flask-RESTful。