web项目018-----用户注册接口实现
用户注册接口实现
我们在api_1_0文件中创建了passport.py文件,来写我们的用户注册接口
首先接收参数
from . import api
from flask import request,jsonify
from lghome.response_code import RET
import re@api.route("/users",methods =["post"])
def register():"""注册:param: 手机号 短信验证码 密码 确认密码:return: json"""# 接受参数,从前端request_dict = request.get_json()print(request_dict)mobile = request.dict.get("mobile")sms_code = request.dict.get("sms_code")password = request.dict.get("password")password2 = request.dict.get("password2")
然后进行简单的验证
# 验证if not all([mobile,sms_code,password,password2]):return jsonify(errno=RET.PARAMERR,errmag='参数不完整')# 判断手机号格式if not re.match(r'1[345678]\9{d}',mobile):return jsonify(errno=RET.PARAMERR,errmag='手机号格式错误')if password != password2:return jsonify(errno=RET.PARAMERR,errmag='两次密码不一致')
接下来 才是业务逻辑
如果正确
我们来完成代码
from . import api
from flask import request,jsonify,session
from lghome.response_code import RET
from lghome import redis_store
import logging
import re
from lghome.models import User@api.route("/users",method =["post"])
def register():"""注册:param: 手机号 短信验证码 密码 确认密码:return: json"""# 接受参数,从前端request_dict = request.get_json()print(request_dict) # 证明输出的是字典mobile = request_dict.get("mobile")sms_code = request_dict.get("sms_code")password = request_dict.get("password")password2 = request_dict.get("password2")# 验证if not all([mobile,sms_code,password,password2]):return jsonify(errno=RET.PARAMERR,errmag='参数不完整')# 判断手机号格式if not re.match(r'1[345678]\9{d}',mobile):return jsonify(errno=RET.PARAMERR,errmag='手机号格式错误')if password != password2:return jsonify(errno=RET.PARAMERR,errmag='两次密码不一致')# 业务逻辑# 从redis取短信验证码try:real_sms_code = redis_store.get("sms_code_%s" % mobile)except Exception as e:logging.error(e)return jsonify(errno=RET.DBERR,errmsg='读取短信验证码异常')# 判断短信验证码是否过期if real_sms_code is None:return jsonify(errno=RET.NODATA, errmsg='短信验证码失效')# 删除redis中的短信验证码try:redis_store.delete("sms_code_%s" % mobile)except Exception as e:logging.error(e)# 判断用户填写的验证码的正确性real_sms_code = real_sms_code.decode() # 转码,转换成字符串if real_sms_code != sms_code:return jsonify(errno=RET.DATAERR, errmsg='短信验证码错误')# 如果用户填写的验证码正确# 判断手机号是否存在(在获取短信验证码的时候已经做过一次了,但是有过期问题,以防万一可以在验证一次)try:user = User.query.filter_by(mobile=mobile).first()except Exception as e:logging.error(e)else:if user is not None:# 表示手机好已经被注册过return jsonify(errno=RET.DATAERR,errmsg='手机号已经存在')# 保存数据user = User(name=mobile,mobile=mobile) # 密码需要加密所以先不写密码# 保存登陆状态到session中session["name"] = mobilesession["mobile"] = mobilesession["user_id"] = user.id# 返回结果return jsonify(errno=RET.OK,errmsg='注册成功')
这就是我们目前的注册代码,还有密码部分没有完成,因为需要加密
web项目018-----用户注册接口实现相关推荐
- webservice 暴漏接口_解决java web 项目发布webservice接口
最近公司有一个需求,需要暴露当前web项目的接口给第三方系统调用,网上查到webservice是跨平台.跨语言的应用技术,所以作为首选. 查找了很多例子,都是很简单的加@WebService到类,加@ ...
- java web项目调用rest接口404
POST http://localhost:8090/newsadmin/codeitemcontroller/addcodeitem 404 (Not Found) 接口调用了半天发现还是404 头 ...
- java basedaoimpl_java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl
在spring+hibernate的web项目中,处理数据层通常会使用Spring框架提供的HibernateTemplate类提供的方法.通常的用法是每一个实体类对应的去写DAO层的接口和实现类.每 ...
- 在 Java Web 项目中,Service 层和 Dao 层真的有必要每个类都加上接口吗
作者 l 会点代码的大叔(CodeDaShu) 很多程序员在刚开始工作的时候,接触到的项目都是这样做的:项目的代码被分成 Controller.Service.Dao 层,一个接口对应一个实现类,然后 ...
- web项目-estore商城系统
web项目 1.关于web项目目的: 将web阶段所有学过的知识点复习总结. 2.关于web项目功能: 功能: 1.用户注册 2.用户 ...
- web项目答辩总结_web实战项目遇到问题总结探索
最近在写一个django的web项目,后端代码基本都已经写好了,主要是前端,以前学过一段前端,只是对一些基本的方法知道,但还有很多东西不熟练,问题是在遇到表单数据时候,如何对参数整体打包发送后端接口, ...
- java web项目流程小结
java web项目从发出请求到返回结果流程整理: 客户发出请求,通过web.xml 中配置的DispatchServlet 接收请求并调用 handlerMapping 将请求分发到对应的Contr ...
- Spring-Boot快速搭建web项目详细总结
最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...
- html json 访问工程,SpringBoot:Web项目中如何优雅的同时处理Json和Html请求的异常...
在一个web项目开发中,通常都会涉及到Html和Json请求.当出现异常的时候,我们需要根据请求类型返回不同的信息.如果是Json请求,那么就返回String或者ReponseEntity类型:如果是 ...
最新文章
- IDEA svn 更换项目,拉新项目的时候 提示 No appropriate protocol
- decltype 和 auto
- react全局状态管理_react 状态管理的复杂度来源
- .Net FrameWork中的網絡操作
- 技术分享 | 微服务模式下如何高效进行API测试
- [BZOJ 1085] [SCOI2005] 骑士精神 [ IDA* 搜索 ]
- python将excel导入oracle,使用Python将Excel文件导入到Oracle数据库里
- C语言分支语句和循环语句及练习
- Zabbix 工作原理
- asp.net mvc 如何在执行完某任务后返回原来页面
- PAT1008数组元素循环右移问题(2,3测试点不过的解决办法)
- 【陆勤阅读】参加kaggle数据挖掘竞赛是怎样一种体验?
- git注意事项(持续更新中)
- python完成机械填表
- 腾讯校园招聘--一面(技术1对1)面经
- JQuery修改对象的属性值
- 我希望用Java拥有的十大锡兰语言功能
- 华科计算机考研2021年分数,华中科技大学2021考研分数线已公布
- 敏捷.敏捷项目管理V2.Jim Highsmith
- 关于低噪声放大器的测试过程