def sign_in_api(): if request.method == 'POST': try: request_data = request.json if request_data is None: raise ViewProcessJump(code='ILLEGAL_INPUT') validator = Validator({ 'name': { 'type': 'string', 'required': 'True', 'maxlength': 16 }, 'password': { 'type': 'string', 'required': 'True', 'maxlength': 32 }, }) if not validator.validate(request_data): raise ViewProcessJump(code='ILLEGAL_USER_INPUT') name = validator.document.get('name') user = User.query.filter( db.text('name = :name')).params(name=name).first() if not user: raise ViewProcessJump(code='USER_NOT_EXIST') resp_json = { 'status': 'success', 'data': { 'token': str(user.id), 'name': user.name }, } return jsonify(**resp_json) except ViewProcessJump as e: if e.code in { 'ILLEGAL_INPUT', 'ILLEGAL_USER_INPUT', }: abort(400) elif e.code in { 'USER_NOT_EXIST', }: resp_json = { 'status': 'fail', 'data': { 'code': 'USER_NOT_EXIST', }, } return jsonify(**resp_json) else: assert False
def books_api(): limit_number =2 if request.method == 'GET': request_data = request.args if request_data is None: raise ViewProcessJump(code='ILLEGAL_GET_REQUEST') before_id = int(request_data['before_id']) user = g.user if before_id == 0: items = Book.query.filter(db.text('user_id = :uid')).params(uid=user.id).order_by(Book.id.desc()).limit(limit_number) elif before_id > 0: items = Book.query.filter(db.text( 'user_id = :uid and id < :before_id' )).params( uid=user.id, before_id=before_id ).order_by(Book.id.desc()).limit(limit_number) resp_data = { 'status': 'success', 'data': { 'books': [{ 'book_id': item.id, 'book_name': item.name, 'book_price': item.price, 'book_intro': item.intro, 'book_owner': user.name } for item in items] } } if len(resp_data['data']['books']) < limit_number: resp_data['data']['next_disable'] = True return jsonify(**resp_data) elif request.method == 'POST': request_data = request.json validator = Validator({ 'book_name': { 'type': 'string', 'minlength': 2, 'maxlength': 30, 'required': True, }, 'book_price': { 'required': True, }, "book_intro": { 'type': 'string', }, }) if not validator.validate(request_data): resp_data = { 'status': 'fail', 'data': { 'code': 1, 'message': 'validate error', } } return jsonify(**resp_data) book = Book( name=request_data['book_name'], price=request_data['book_price'], intro=request_data['book_intro'], user_id=g.user.id ) db.session.add(book) db.session.commit() return jsonify(**{})
def sign_up_api(): if request.method == 'POST': try: request_data = request.json #数据为空 if request_data is None: raise ViewProcessJump(code='ILLEGAL_USER_INPUT') #验证器 validator = Validator({ 'name': { 'required': True, 'type': 'string', 'maxlength': 16, }, 'password': { 'required': True, 'type': 'string', 'maxlength': 32, }, 'gender': { 'required': True, 'type': 'integer', 'allowed': GENDER_OPTIONS.values(), }, }) #数据不符合验证器格式 if not validator.validate(request_data): raise ViewProcessJump(code='ILLEGAL_USER_INPUT') name = validator.document.get('name') password = validator.document.get('password') gender = validator.document.get('gender') user_existed = User.query.filter(db.text('name = :name')).params(name=name).first() if user_existed: raise ViewProcessJump(code='USER_NAME_EXISTED') user = User() db.session.add(user) user.name = name user.password = password user.gender = gender db.session.commit() resp = { 'status': 'success', 'data': { 'token': str(user.id), 'name': user.name, }, } return jsonify(**resp) #错误 except ViewProcessJump as e: if e.code in ( 'ILLEGAL_USER_INPUT', ): abort(400) elif e.code in ( 'USER_NAME_EXISTED', ): resp = { 'status': 'fail', 'data': { 'code': API_FAIL_CODES['SIGN_UP']['USER_NAME_EXISTED'], }, } return jsonify(**resp) else: assert False
def sign_up_api(): if request.method == 'POST': try: request_data = request.json if request_data is None: raise ViewProcessJump(code='ILLEGAL_USER_INPUT') validator = Validator({ 'name': { 'required': True, 'type': 'string', 'maxlength': 16, }, 'password': { 'required': True, 'type': 'string', 'maxlength': 32, }, 'gender': { 'required': True, 'type': 'integer', 'allowed': GENDER_OPTIONS.values(), }, }) if not validator.validate(request_data): raise ViewProcessJump(code='ILLEGAL_USER_INPUT') name = validator.document.get('name') password = validator.document.get('password') gender = validator.document.get('gender') user_existed = User.query.filter(db.text('name = :name')).params(name=name).first() if user_existed: raise ViewProcessJump(code='USER_NAME_EXISTED') user = User() db.session.add(user) user.name = name user.password = password user.gender = gender db.session.commit() resp = { 'status': 'success', 'data': { 'token': str(user.id), 'name': user.name, }, } return jsonify(**resp) except ViewProcessJump as e: if e.code in ( 'ILLEGAL_USER_INPUT', ): abort(400) elif e.code in ( 'USER_NAME_EXISTED', ): resp = { 'status': 'fail', 'data': { 'code': API_FAIL_CODES['SIGN_UP']['USER_NAME_EXISTED'], }, } return jsonify(**resp) else: assert False