用户注册接口实现

我们在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-----用户注册接口实现相关推荐

  1. webservice 暴漏接口_解决java web 项目发布webservice接口

    最近公司有一个需求,需要暴露当前web项目的接口给第三方系统调用,网上查到webservice是跨平台.跨语言的应用技术,所以作为首选. 查找了很多例子,都是很简单的加@WebService到类,加@ ...

  2. java web项目调用rest接口404

    POST http://localhost:8090/newsadmin/codeitemcontroller/addcodeitem 404 (Not Found) 接口调用了半天发现还是404 头 ...

  3. java basedaoimpl_java web项目DAO层通用接口BaseDao与实现类BaseDaoImpl

    在spring+hibernate的web项目中,处理数据层通常会使用Spring框架提供的HibernateTemplate类提供的方法.通常的用法是每一个实体类对应的去写DAO层的接口和实现类.每 ...

  4. 在 Java Web 项目中,Service 层和 Dao 层真的有必要每个类都加上接口吗

    作者 l 会点代码的大叔(CodeDaShu) 很多程序员在刚开始工作的时候,接触到的项目都是这样做的:项目的代码被分成 Controller.Service.Dao 层,一个接口对应一个实现类,然后 ...

  5. web项目-estore商城系统

    web项目 1.关于web项目目的:     将web阶段所有学过的知识点复习总结.      2.关于web项目功能:         功能:         1.用户注册         2.用户 ...

  6. web项目答辩总结_web实战项目遇到问题总结探索

    最近在写一个django的web项目,后端代码基本都已经写好了,主要是前端,以前学过一段前端,只是对一些基本的方法知道,但还有很多东西不熟练,问题是在遇到表单数据时候,如何对参数整体打包发送后端接口, ...

  7. java web项目流程小结

    java web项目从发出请求到返回结果流程整理: 客户发出请求,通过web.xml 中配置的DispatchServlet 接收请求并调用 handlerMapping 将请求分发到对应的Contr ...

  8. Spring-Boot快速搭建web项目详细总结

    最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...

  9. html json 访问工程,SpringBoot:Web项目中如何优雅的同时处理Json和Html请求的异常...

    在一个web项目开发中,通常都会涉及到Html和Json请求.当出现异常的时候,我们需要根据请求类型返回不同的信息.如果是Json请求,那么就返回String或者ReponseEntity类型:如果是 ...

最新文章

  1. IDEA svn 更换项目,拉新项目的时候 提示 No appropriate protocol
  2. decltype 和 auto
  3. react全局状态管理_react 状态管理的复杂度来源
  4. .Net FrameWork中的網絡操作
  5. 技术分享 | 微服务模式下如何高效进行API测试
  6. [BZOJ 1085] [SCOI2005] 骑士精神 [ IDA* 搜索 ]
  7. python将excel导入oracle,使用Python将Excel文件导入到Oracle数据库里
  8. C语言分支语句和循环语句及练习
  9. Zabbix 工作原理
  10. asp.net mvc 如何在执行完某任务后返回原来页面
  11. PAT1008数组元素循环右移问题(2,3测试点不过的解决办法)
  12. 【陆勤阅读】参加kaggle数据挖掘竞赛是怎样一种体验?
  13. git注意事项(持续更新中)
  14. python完成机械填表
  15. 腾讯校园招聘--一面(技术1对1)面经
  16. JQuery修改对象的属性值
  17. 我希望用Java拥有的十大锡兰语言功能
  18. 华科计算机考研2021年分数,华中科技大学2021考研分数线已公布
  19. 敏捷.敏捷项目管理V2.Jim Highsmith
  20. 关于低噪声放大器的测试过程

热门文章

  1. 微型计算机sp作用,微机原理及应用A-中国大学mooc-题库零氪
  2. oracle10g ora 01841,数据恢复:Oracle数据库中实例恢复起点与终点及RBA
  3. 《中国历史地图集》主编谭其骧教授资料
  4. 数据库中创建存储过程的方法
  5. matlab与网格,matlab网格网格的使用
  6. 了解如何获得免费的笔记本电脑在线
  7. 《医药代表备案管理办法》实施对药品营销的影响
  8. 第十章 读后心得体会
  9. iphone ios 如何查询apple store分类排名和下载量
  10. 正则表达式匹配邮箱 php,php中匹配邮箱地址正则表达式