接口名称: /interfaces/
请求方式: POST
参数格式: JSON
| 参数 | 变量名 | 类型 | 说明 | 是否必传 |
| 接口名称 | name | 字符串 | 项目接口名称 | 是 |
| 接口地址 | url | 字符串 | 接口地址 | 是 |
| 请求方法 | method | 字符串 | 请求方法 | 是 |
| 接口类型 | type | 字符串 | 接口类型 | 是 |
| 所属项目 | project | 整数 | 所属项目id | 是 |
请求示例:
json格式参数
{
"name": "登录",
"url": "/users/login/",
"method": "post",
"type": "1",
"project": 1
}
响应状态码:201 响应数据:
{"id": 1,"steps": [],"name": "登录","url": "/users/login/","method": "post","type": "1","project": 1}
请求方式: DELETE
参数格式: 路径参数
请求参数: 无
响应状态码:204 响应数据:无
请求方式: PUT/PATCH
参数格式: JSON
| 参数 | 变量名 | 类型 | 说明 | 是否必传 |
| 接口名称 | name | 字符串 | 项目接口名称 | put请求必传 |
| 接口地址 | url | 字符串 | 接口地址 | put请求必传 |
| 请求方法 | method | 字符串 | 请求方法 | put请求必传 |
| 接口类型 | type | 字符串 | 接口类型 | put请求必传 |
| 所属项目 | project | 整数 | 所属项目id | put请求必传 |
请求示例:
json格式参数
{
"name": "登录",
"url": "/users/login/",
"method": "post",
"type": "1",
"project": 1
}
响应状态码:200 响应数据:
{"id": 1,"steps": [],"name": "登录","url": "/users/login/","method": "post","type": "1","project": 1}
请求方式: GET
参数格式: URL参数
请求参数:
| 参数 | 变量名 | 类型 | 说明 | 是否必传 |
| 项目id | project | 整数 | 所属项目id | 否 |
| 类型 | type | 字符串 | 接口类型 | 否 |
响应状态码:200 响应数据:
[{"id": 1,"steps": [],"name": "登录","url": "/users/login/", "method": "post","type": "1","project": 1}]
请求方式: GET
参数格式: 路径参数
请求参数: 无
响应状态码:200 响应数据:
{"id": 1,"steps": [],"name": "登录","url": "/users/login/","method": "post","type": "1","project": 1}
在projects/serializers.py 模块中添加如下序列化器:
在接口详情中,需要嵌套测试步骤,所以先定义了一个测试步骤的序列化器
class NestTestStepSerializer(serializers.ModelSerializer):"""嵌套测试步骤序列化器"""class Meta:model = TestStepfields = ['id', 'title']class InterfaceSerializer(serializers.ModelSerializer):"""接口序列化器"""steps = NestTestStepSerializer(source='teststep_set', many=True, read_only=True)class Meta:model = Interfacefields = '__all__'
class InterfaceViewSet(ModelViewSet):serializer_class = InterfaceSerializerqueryset = Interface.objects.all()permission_classes = [IsAuthenticated, IsLeaderOrReadOnly]# filterset_fields = ['project', 'type']filterset_class = InterFaceFilter# 手动实现过滤功能# 复写get_queryset# def get_queryset(self):# queryset = super().get_queryset()# # 获取参数# project = self.request.query_params.get('project')# type_ = self.request.query_params.get('type')# # 过滤# if project:# queryset = queryset.filter(project=project)# if type_:# queryset = queryset.filter(type=type_)# return queryset
from rest_framework.routers import DefaultRouterfrom . import viewsrouter = DefaultRouter()
router.register('interfaces', views.InterfaceViewSet)
urlpatterns = router.urls
目前是这样子:



改造: (嵌套序列化器)
