前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AutoLine源码分析之如何构建restful API

AutoLine源码分析之如何构建restful API

作者头像
苦叶子
发布2018-08-06 14:43:24
4740
发布2018-08-06 14:43:24
举报
文章被收录于专栏:开源优测开源优测
代码语言:javascript
复制
什么是AutoLine开源平台

AutoLine开源平台是一个开源自动化测试解决方案,基于RobotFramework进行二次开发,支持RobotFramework几乎所有的库。

源码地址

github地址: https://github.com/small99/AutoLine 码 云 地 址:https://gitee.com/lym51/AutoLine

下图为AutoLine所有的restful API的定义及实现

restful API主要实现以下功能:

  1. 产品管理
  2. 项目管理
  3. 对象、套件、用例、变量、步骤管理
  4. 调度及任务管理
  5. 用户管理

等等

如何实现restful API?

在autoline开源平台中我们采用了blueprint来统计管理路由,使用flask-restful插件来实现restful API

具体实现步骤如下:

1. 注册api blueprint,在app下的__init__.py可以看到以下代码片段

代码语言:javascript
复制
from .api import api_bp as api_blueprint
app.register_blueprint(api_blueprint, url_prefix='/api/v1')

2. 在api下的__init__.py可以看到以下代码片段,来实现restful API资源添加

代码语言:javascript
复制
# 导入blueprint及restful
from flask import Blueprint
from flask_restful import Api

# 构建blueprint及restful Api对象
api_bp = Blueprint('api', __name__)
api = Api(api_bp)

# 添加认证restful api资源
from .auth import Auth
api.add_resource(Auth, "/auth/")

# 添加产品管理restful api资源
from .product import Product
api.add_resource(Product, "/product/")

3. 我们看下产品管理的restful api的具体实现代码,在api/product.py中,下面的代码已经去掉了具体的实现,以便大家更清楚的理解代码实现骨架:

代码语言:javascript
复制
# -*- coding: utf-8 -*-

__author__ = "苦叶子"

"""

公众号: 开源优测

Email: lymking@foxmail.com

"""

from datetime import datetime

from flask_restful import Resource, reqparse
from flask_login import current_user

from ..models import AutoProduct, User
from .. import db

# 继承Resource
class Product(Resource):
    def __init__(self):
        # 定义从前端传入服务端要转换参数
        self.parser = reqparse.RequestParser()
        self.parser.add_argument('name', type=str)
        self.parser.add_argument('desc', type=str)
        self.parser.add_argument('tags', type=str)
        self.parser.add_argument('enable', type=bool, default=True)
        self.parser.add_argument('id', type=int, default=-1)
        self.parser.add_argument('method', type=str)
        self.parser.add_argument('page', type=int, default=1)
        self.parser.add_argument('rows', type=int, default=15)
    
    # get方法的实现
    def get(self):
        args = self.parser.parse_args()

        pass

        return data
    
    # post方法的实现
    # 通过参数method的值来实现增删改查动作
    # 目的是避免再去实现put、delete等方法,统一由post方法实现
    def post(self):
        args = self.parser.parse_args()
        method = args["method"].lower()
        if method == "create":
            return self.__create(args), 201
        elif method == "edit":
            return self.__edit(args), 201
        elif method == "delete":
            return self.__delete(args), 201
        elif method == "query":
            return self.__query(args), 201

        return {"status": "fail", "msg": "方法: %s 不支持" % method}, 201
    
    # 实现创建动作,即新增
    def __create(self, args):
        pass
        
    # 实现查询
    def __query(self, args):
        pass

    # 实现编辑
    def __edit(self, args):
        pass
    
    # 实现删除
    def __delete(self, args):
        pass

AutoLine开源平台简明教程

AutoLine开源平台安装部署教程

AutoLine开源平台常见问题解答

AutoLine开源平台源码组织结构

AutoLine源码分析之开始篇

AutoLine源码分析之入口源码

AutoLine源码分析之配置管理

AutoLine源码分析之数据库模型

AutoLine源码分析之Flask初始化模块

AutoLine源码分析之静态页面模板及对应API介绍

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源优测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档