def get(self, request): """ 接口分组 :param request: :return: """ project_id = request.GET.get("project_id") # 校验参数 if not project_id: return JsonResponse(code="999996", msg="参数有误!") if not project_id.isdecimal(): return JsonResponse(code="999996", msg="参数有误!") # 验证项目是否存在 try: pro_data = Project.objects.get(id=project_id) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") # 序列化结果 pro_data = ProjectSerializer(pro_data) # 校验项目状态 if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") # 查找项目下所有接口信息,并按id排序,序列化结果 obi = ApiGroupLevelFirst.objects.filter(project=project_id).order_by("id") serialize = ApiGroupLevelFirstSerializer(obi, many=True) return JsonResponse(data=serialize.data, code="999999", msg="成功!")
def group(request): """ 接口分组 project_id 项目ID :return: """ project_id = request.GET.get("project_id") if not project_id.isdecimal(): return JsonResponse(code_msg=GlobalStatusCode.parameter_wrong()) obj = Project.objects.filter(id=project_id) if obj: obi = ApiGroupLevelFirst.objects.filter( project=project_id).order_by("id") serialize = ApiGroupLevelFirstSerializer(obi, many=True) return JsonResponse(data=serialize.data, code_msg=GlobalStatusCode.success()) else: return JsonResponse(code_msg=GlobalStatusCode.project_not_exist())
def get(self, request): """ 接口分组 :param request: :return: """ project_id = request.GET.get("project_id") if not project_id: return JsonResponse(code="999996", msg="参数有误!") if not project_id.isdecimal(): return JsonResponse(code="999996", msg="参数有误!") try: pro_data = Project.objects.get(id=project_id) except ObjectDoesNotExist: return JsonResponse(code="999995", msg="项目不存在!") pro_data = ProjectSerializer(pro_data) if not pro_data.data["status"]: return JsonResponse(code="999985", msg="该项目已禁用") obi = ApiGroupLevelFirst.objects.filter( project=project_id).order_by("id") serialize = ApiGroupLevelFirstSerializer(obi, many=True) return JsonResponse(data=serialize.data, code="999999", msg="成功!")
def swagger_api(url, project, user): """ 请求swagger地址,数据解析 :param url: swagger地址 :param project: 项目ID :param user: 用户model :return: """ req = requests.get(url) data = req.json() apis = data["paths"] tags = data["tags"] try: params = data["definitions"] except KeyError: pass tg = {} obj = Project.objects.get(id=project) for t in tags: tag ={"name" : t["name"],"project_id" : project} group_serialize = ApiGroupLevelFirstSerializer(data=tag) if group_serialize.is_valid(): group_serialize.save(project=obj) group_id = group_serialize.data.get("id") tg.update({t["name"] : group_id}) for api, m in apis.items(): requestApi = { "project_id": project, "status": True, "mockStatus": True, "code": "", "desc": "", "httpType": "HTTP", "responseList": [] } requestApi["apiAddress"] = api for requestType, data in m.items(): requestApi["requestType"] = requestType.upper() if "tags" in data: logging.error("tags") logging.error(tg[data["tags"][0]]) requestApi["apiGroupLevelFirst_id"] = tg[data["tags"][0]] try: requestApi["name"] = data["summary"] except KeyError: logging.error("43") pass try: if data["consumes"][0] == "application/json": requestApi["requestParameterType"] = "form-data" else: requestApi["requestParameterType"] = "form-data" requestApi["headDict"] = [{"name": "Content-Type", "value": data["consumes"][0]}] except KeyError: logging.error("52") requestApi["requestParameterType"] = "raw" if "parameters" in data: parameter = [] for j in data["parameters"]: if j["in"] == "header": logging.error("header57") requestApi["headDict"].append({"name": j["name"], "value": "String"}) elif j["in"] == "body": dto = j["name"] logging.error("dto——body " + dto) try: if "description" in j: parameter.append({"name": dto, "value": "", "_type": j["type"],"required": j["required"], "restrict": "", "description": j["description"]}) else: parameter.append({"name": dto, "value": "", "_type": j["type"],"required": j["required"], "restrict": "", "description": ""}) except: logging.error("body71") pass elif j["in"] == "query": dto = j["name"] logging.error("dto——query " + dto) try: if "description" in j: parameter.append({"name": dto, "value": "", "_type": j["type"],"required": j["required"], "restrict": "", "description": j["description"]}) else: parameter.append({"name": dto, "value": "", "_type": j["type"],"required": j["required"], "restrict": "", "description": ""}) except: logging.error("query84") pass requestApi["requestList"] = parameter if "responses" in data: response = [] if "schema" in data["responses"]["200"]: ref = data["responses"]["200"]["schema"]["$ref"] dto = ref.split("/")[2] for key, value in params[dto]["properties"].items(): if "description" in value and "type" in value: response.append({"name": key, "value": value["description"], "_type": value["type"],"required": True, "description": value["description"]}) else: response.append({"name": key, "value": "", "_type": "String","required": True, "description": ""}) if "items" in value: if "$ref" in value["items"]: ref1 = value["items"]["$ref"] dto1 = ref1.split("/")[2] logging.error("dto1 "+dto1) for key1, value1 in params[dto1]["properties"].items(): logging.error("key1 "+key1) if "description" in value1 and "type" in value1: response.append({"name": key + "." + key1, "value": value1["description"], "_type": value1["type"],"required": True, "description": value1["description"]}) else: response.append({"name": key + "." + key1, "value": "", "_type": "String","required": True, "description": ""}) if "items" in value1: ref2 = value1["items"]["$ref"] dto2 = ref2.split("/")[2] logging.error("dto2 "+dto2) for key2, value2 in params[dto2]["properties"].items(): logging.error("key2 "+key2) if "description" in value2 and "type" in value2: response.append({"name": key + "." + key1 + "." + key2, "value": value2["description"], "_type": value2["type"],"required": True, "description": value2["description"]}) else: response.append({"name": key + "." + key1 + "." + key2, "value": "", "_type": "String","required": True, "description": ""}) requestApi["responseList"] = response requestApi["userUpdate"] = user.id result = add_swagger_api(requestApi, user)