学习python-20191108(2)REST接口相关
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了学习python-20191108(2)REST接口相关,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2113字,纯文字阅读大概需要4分钟。
内容图文
![学习python-20191108(2)REST接口相关](/upload/InfoBanner/zyjiaocheng/669/8d1181502b374aebbe236beebc3db937.jpg)
一、客户登录验证
在使用接口前,需要对客户进行登录验证
enums.py文件代码:
#定义枚举,客户端登录的方式有很多种形式:邮箱登录、手机登录、微信小程序登录、微信公众号登录 class ClientTypeEnum(Enum): USER_EMAIL = 100 # 邮箱 USER_MOBILE = 101 # 手机 USER_MINA = 200 # 微信小程序 USER_WX = 201 # 微信公众号
forms.py文件代码:
from wtforms import StringField, IntegerField from wtforms.validators import DataRequired, length, Email, Regexp from wtforms import ValidationError class ClientForm(Form): account = StringField(validators=[DataRequired(message='不允许为空'), length( min=5, max=32 )])#登录账号 账号必须传入 secret = StringField()#登录密码 可以不传密码 type = IntegerField(validators=[DataRequired()])#客户端类型 类型必须传入 #自定义的验证器,验证类型只能为要求的枚举值 def validate_type(self, value): try: client = ClientTypeEnum(value.data) #本行代码实现了数字向枚举的转换 value.data是传入的数字
except ValueError as e: raise e self.type.data = client
客户端提交数据的方式有:表单提交、JSON对象方式提交(移动客户端)
client.py文件代码:
from flask import request, jsonify from app.libs.error_code import ClientTypeError, Success from app.libs.redprint import Redprint from app.models.user import User from app.validators.forms import ClientForm, UserEmailForm from app.libs.enums import ClientTypeEnum from werkzeug.exceptions import HTTPException api = Redprint('client') @api.route('/register', methods=['POST']) def create_client(): #接收参数的方式有两类: # 1、data = request.json 使用flask的request对象 # 2、request.args.to_dict() # 方式一 data = request.json form = ClientForm(data=data) # 方式二 form = ClientForm().validate_for_api() # 用字典的方式,处理客户端不同的登录方式 promise = { ClientTypeEnum.USER_EMAIL: __register_user_by_email, #对应下方函数 邮箱登录 ClientTypeEnum.USER_MINA: __register_user_by_MINA # 微信小程序登录 } promise[form.type.data]() return Success() #邮箱登录的对应函数 def __register_user_by_email(): form = UserEmailForm().validate_for_api() User.register_by_email(form.nickname.data, form.account.data, form.secret.data) #微信小程序登录的对应函数 def __register_user_by_MINA(): pass
内容总结
以上是互联网集市为您收集整理的学习python-20191108(2)REST接口相关全部内容,希望文章能够帮你解决学习python-20191108(2)REST接口相关所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。