当然,除了上述基本的CRUD操作(如GET获取用户信息)外,我们还可以在其他类型的API接口中使用统一响应格式封装。这里再举几个不同HTTP方法的例子:
# 继续上面的代码...
# 创建处理用户登录的资源类
class LoginResource(BaseResource):
def post(self):
json_data = request.get_json()
username = json_data.get('username')
password = json_data.get('password')
try:
# 假设authenticate_user是验证用户凭据的方法
user, token = authenticate_user(username, password)
if user and token:
return self.make_response(data={'token': token})
else:
return self.make_response(error='Invalid credentials', status_code=401)
except Exception as e:
return self.make_response(error=str(e), status_code=500)
api.add_resource(LoginResource, '/api/login')
# 创建处理用户注册的资源类
class RegisterResource(BaseResource):
def post(self):
json_data = request.get_json()
username = json_data['username']
password = json_data['password']
try:
# 假设register_new_user是注册新用户的方法
register_new_user(username, password)
return self.make_response(message='User registered successfully')
except DuplicateUsernameError:
return self.make_response(error='Username already exists', status_code=409)
except Exception as e:
return self.make_response(error=str(e), status_code=500)
api.add_resource(RegisterResource, '/api/register')
在这些例子中:
LoginResource
处理POST请求,用于用户登录验证。如果凭据有效,返回包含JWT令牌的响应;否则返回错误信息并设置HTTP状态码为401(未授权)。RegisterResource
同样处理POST请求,但用于用户注册。当用户成功注册时返回成功的消息,如果用户名已存在则返回409(冲突)状态码及相应错误信息。
每个资源类都通过调用父类BaseResource
中的make_response
方法确保了响应格式的一致性。
当前文章价值5.46元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)
评论已关闭!