自动化测试平台(三):开发登录接口

181 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情

一、进行接口开发

1)开发接口

接口说明给出后,我们就可以开发对应的接口了,在views.py 文件中输入如下代码:

from django.contrib.auth import authenticate
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.authtoken.models import Token


@api_view(['POST'])  # 列表中的元素代表支持哪些请求方法
def login(request):
    """
    登录接口
    """
    # 验证用户帐号密码的内置方法
    user = authenticate(username=request.data['username'], password=request.data['password'])
    if user:
        Token.objects.filter(user_id=user.id).delete()  # 删除原来的token
        token = Token.objects.create(user=user)  # 创建新的token
        return Response(data={'msg': '登录成功!', 'token': token.key})  # 返回登录信息及token
    return Response(data={'msg': '用户名或错误!'}, status=status.HTTP_401_UNAUTHORIZED)


2)指定路由url

1.在user文件夹新增文件urls.py,并增加如下代码:

from django.urls import path
from user.views import login

app_name = "accounts"

urlpatterns = [
    path('login', login),  # 代表请求接口路径
]

3)主入口配置路由前缀

1.在QNtest下的urls.py文件中: 在这里插入图片描述


增加如下代码:

from django.contrib import admin
from django.urls import path
from django.urls import include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('user/', include('user.urls', namespace='user')),
]

目的是将user app的路由注册到这里,并增加接口地址前缀user/


4)验证效果

启动项目后,通过postman (postman传参格式记得选json) 或者jmeter携带接口参数(这里以jmeter举例)进行请求 (帐号密码用你创建时输入的)


在这里插入图片描述


请求结果


在这里插入图片描述


至此我们已经完成了一个用户登录验证的接口了。


二、总结

在我们实际的应用场景中,用户登录成功后还需要去查询用户的一些信息(姓名、性别、邮箱、角色、用户名、地址等),上面代码实现的token验证和登录都是基于mysql数据库的,查询用户信息的话也是走mysql库中进行获取,每次涉及权限校验和验证的接口就都需要查一次库,这样请求量大了后会对数据库增加不少的压力,我们可以通过redis来做登录的信息验证并将用户信息存入到redis中,来提高性能。

关于如何进行redis认证可以参考教程《【DRF】django restframework如何使用redis来做token认证》 进行学习。