测试平台接口开发日记04

2783 篇文章 4 订阅
2643 篇文章 26 订阅
文章描述了一个使用FastAPI框架和SQLAlchemyORM创建用户注册接口的过程。首先在schemas中定义了用户参数模型,接着在crud中处理数据交互,包括手机号、用户名、密码和邮箱的验证以及检查数据的唯一性。然后在routers中定义接口路由并启动服务。最后,文章提到已经测试过该接口并提供了相关学习资源。
摘要由CSDN通过智能技术生成

上一节已生成了表结构和数据库同步,本章就开始编写接口。

定义传参模型


首先在schemas目录中新建一个user.py文件,定义接口需要传的参数。代码如下:

from pydantic import BaseModel, EmailStr


class UsersSchemas(BaseModel):
    mobile: str
    username: str
    password: str
    mailbox: EmailStr

数据交互处理


其次在crud目录中新建crud_user.py文件,主要是处理和数据表的数据交互,代码如下:

from sqlalchemy.orm import Session
from sqlalchemy import (
    select,
    and_,
    or_
)
from src.app.schemas.user import UsersLogin
from src.app.schemas.user import UsersSchemas
from src.app.models.models_user import User as u
from src.app.cabinet.verification import VerificationData

__all__ = [
    "UsersCrud"
]


class UsersCrud:
    def __init__(self, *, session: Session) -> None:
        self.db = session

    def register_user(self, user: UsersSchemas):
        """
        注册接口数据和数据库交互
        @param  :
        @return  :
        """
        try:

            # 验证手机号格式是否规范
            if not VerificationData.verification(mobile=user.mobile):
                raise Exception("手机号码格式不正确...")

            # 验证账号长度
            if not VerificationData.verification_lenth(var=user.username):
                raise Exception("账号长度为5-15个字符...")

            # 验证密码长度
            if not VerificationData.verification_lenth(var=user.password, max_len=25):
                raise Exception("密码长度为5-25个字符...")

            # 验证邮箱格式是否规范
            if not VerificationData.verification_email(email=user.mailbox):
                raise Exception("邮箱格式不正确...")

            # 首先查询手机号或者账号是否重复
            results = self.db.execute(
                select(u.mobile, u.username).where(
                    or_(
                        u.mobile == user.mobile,
                        u.username == user.username
                    )
                )
            )

            if results.scalars().first():
                raise Exception("账号或手机号重复...")

            # 接收到数据并赋值给users_info
            users_info = u(
                mobile=user.mobile, username=user.username,
                password=user.password, mailbox=user.mailbox
            )
            # 往数据库添加数据
            self.db.add(users_info)
            # 往数据库提交数据
            self.db.commit()
            # 刷新提交的数据
            self.db.refresh(users_info)

            # 查询新注册的账号信息
            update_results = self.db.execute(
                select(u.id, u.mobile, u.username, u.mailbox).where(
                    and_(
                        u.mobile == user.mobile,
                        u.username == user.username
                    )
                )
            ).first()
            return update_results
        except Exception as exc:
            raise exc

接口定义并启动服务


然后在routers目录中新建一个v_api目录(自行定义名称),在v_api目录中新建api_users.py文件,主要是定义接口的路由和数据的接口,代码如下:

from fastapi import APIRouter
from fastapi import Depends
from sqlalchemy.orm import Session
from src.app.crud.crud_user import UsersCrud
from src.app.core.db.session import session
from src.app.schemas.user import UsersSchemas
from src.app.core.code_response import CodeResponse
from src.app.core.base_redis import redis_client


router = APIRouter(
    prefix="/users"
)


@router.post("/register")
async def user_register(users: UsersSchemas, db: Session = Depends(session)):
    """
    注册接口
    @param  :
    @return  :
    """
    try:
        response = UsersCrud(session=db).register_user(user=users)
        return CodeResponse.succeed(data=response)
    except Exception as exc:
        return CodeResponse.defeated(err_msg=str(exc.args[0]))

再然后在v_api目录中新建一个api_router.py,用于汇集接口的引包,具体代码如下:

from fastapi import APIRouter
from src.app.routers.v_api import api_users


api_router = APIRouter()
api_router.include_router(router=api_users.router, tags=["用户模块接口"])

最后再进入根目录下main.py文件中,写入我们启动代码,具体代码如下:

import uvicorn
from fastapi import FastAPI
from src.app.routers.api_router import api_router

app = FastAPI()
app.include_router(router=api_router)

if __name__ == "__main__":
    uvicorn.run(app="src.main:app", reload=True)

至此,第一个接口已经完成,可自行测试一下是否成功,当然我是已经测试过的,后续接口还可以继续优化,继续加油吧!

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取【保证100%免费】

在这里插 入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

开发一款日记软件用于鸿蒙系统,需求分析主要包括以下几个关键步骤: 1. 用户需求理解:首先,了解目标用户群体,他们的年龄、性别、职业、使用习惯等,以便设计符合用户喜好的界面和功能。例如,学生可能更关注便捷记录,职场人可能需要时间管理和分类功能。 2. 功能需求: - **记录功能**:用户能轻松添加新日记条目,编辑内容,支持文字、图片、语音等多种形式的记录。 - **分类和标签**:提供日志分类或标签系统,方便用户整理和查找历史记录。 - **隐私保护**:确保用户的日记信息安全,如密码加密存储,以及设置访问权限。 - **同步与备份**:支持多设备间的自动同步,以及云备份以防数据丢失。 - **提醒功能**:定时提醒用户写日记,鼓励形成习惯。 - **美观与易用**:简洁美观的UI设计,易于上手的操作流程。 3. 性能需求:考虑到鸿蒙系统的资源限制,优化内存管理,保证软件运行流畅,响应迅速。 4. 技术选型:研究适合鸿蒙平台开发工具和技术栈,比如使用鸿蒙系统提供的SDK,或者兼容的跨平台开发框架。 5. 设计文档:编写详细的设计文档,包括架构图、数据库设计、接口设计等,为后续的编码工作提供指导。 6. 测试与反馈:在开发过程中,进行功能测试、性能测试和用户体验测试,收集用户反馈,不断迭代优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值