【预习帖】全流程项目实战 2

实战内容

  • 熟悉业务:litemall后台管理系统
  • 接口自动化
  • 持续集成:Jenkins

接口列表

https://litemall.hogwarts.ceshiren.com/swagger-ui.html

获取 token

获取X-Litemall-Admin-Token是调用Litemall商城后台管理API接口的第一步,相当于创建了一个登录凭证,其它的业务API接口,都需要依赖于X-Litemall-Admin-Token来鉴权调用者身份。

请求方式: POST(HTTP
请求地址: https://litemall.hogwarts.ceshiren.com/admin/auth/login
参数说明:

参数 是否必填 说明
username 用户名,默认管理员admin123
password 密码,默认密码admin123

返回结果:


{

    "errno":0,

    "data":{

        "adminInfo":{

            "nickName":"admin123",

            "avatar":"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif"

        },

        "token":"830cd329-befb-4ec5-9960-626197abaa9a"

    },

    "errmsg":"成功"

}

备注:X-Litemall-Admin-Token 使用方法:在每个业务接口的headers中添加token键值对,键为“X-Litemall-Admin-Token”,值为具体的token值。

上架商品

管理员可以通过此接口实现商品上架功能。

请求方式POST(HTTP)

**请求地址:**https://litemall.hogwarts.ceshiren.com/admin/goods/create

请求示例:


{

    "goods":{

        "picUrl":"",

        "gallery":[

        ],

        "isHot":true,

        "isNew":true,

        "isOnSale":true,

        "goodsSn":"12491264512421",

        "name":"Hogwarts",

        "counterPrice":"8888"

    },

    "specifications":[

        {

            "specification":"规格",

            "value":"标准",

            "picUrl":""

        }

    ],

    "products":[

        {

            "id":0,

            "specifications":[

                "标准"

            ],

            "price":0,

            "number":0,

            "url":""

        }

    ],

    "attributes":[

        {

            "attribute":"材质",

            "value":"纯棉"

        }

    ]

}

参数说明 :

参数 字段类型 是否必填 说明
goods 对象 商品信息对象
specifications 数组 商品规格对象
products 数组 商品价格信息对象
attributes 数组 商品参数对象

返回结果:


{"errno":0,"errmsg":"成功"}

详细字段说明:

  • goods对象请求示例

{

    "picUrl":"",

    "gallery":[

    ],

    "isHot":true,

    "isNew":true,

    "isOnSale":true,

    "goodsSn":"12491264512421",

    "name":"Hogwarts",

    "counterPrice":"8888"

}

  • goods对象参数说明 :
参数 字段类型 是否必填 说明
picUrl 字符串 商品图片
gallery 数组 宣传画廊图片
isHot 布尔值 是否热卖
isNew 布尔值 是否新品
isOnSale 布尔值 是否在售
goodsSn 字符串 商品编号
name 字符串 商品名称
counterPrice 字符串 市场售价
  • specifications对象示例

{

    "specification":"规格",

    "value":"标准",

    "picUrl":""

}

  • specifications对象字段说明
参数 字段类型 是否必填 说明
specification 字符串 固定值为“规格”
value 字符串 固定值为“标准”
picUrl 字符串 图片地址
  • products对象示例

{

    "id":0,

    "specifications":[

        "标准"

    ],

    "price":0,

    "number":0,

    "url":""

}

  • products对象字段说明
  • products对象字段说明
参数 字段类型 是否必填 说明
id 数字 字段编号
specifications 数组 固定元素是"标准"
price 数字 货品售价
number 数字 货品数量
url 字符串 货品图片地址
  • attributes对象示例

{

    "attribute":"材质",

    "value":"纯棉"

}

  • attributes对象字段说明
参数 字段类型 是否必填 说明
attribute 字符串 商品参数名称
value 字符串 商品参数值

商品列表

请求方式:GET (HTTP)

**请求地址:**https://litemall.hogwarts.ceshiren.com/admin/goods/list?goodsSn=12491264512421&name=Hogwarts&goodsId=1181318

参数说明 :

参数 字段类型 是否必填 说明
goodsSn 字符串 商品编号
name 字符串 商品名称
goodsId 字符串 商品ID

返回结果:


{

    "errno":0,

    "data":{

        "total":1,

        "pages":1,

        "limit":20,

        "page":1,

        "list":[

            {

                "id":1181318,

                "goodsSn":"12491264512421",

                "name":"Hogwarts",

                "categoryId":0,

                "brandId":0,

                "gallery":[

                ],

                "keywords":"",

                "brief":"",

                "isOnSale":true,

                "sortOrder":100,

                "picUrl":"",

                "isNew":true,

                "isHot":true,

                "unit":"’件‘",

                "counterPrice":8888,

                "retailPrice":0,

                "addTime":"2022-03-12 10:11:41",

                "updateTime":"2022-03-12 10:11:41",

                "deleted":false

            }

        ]

    },

    "errmsg":"成功"

}

删除商品

请求方式POST(HTTP)

**请求地址:**https://litemall.hogwarts.ceshiren.com/admin/goods/delete

请求示例:


{

    "id":1181318,

    "goodsSn":"12491264512421",

    "name":"Hogwarts"

}

参数说明 :

参数 字段类型 是否必填 说明
id 数字 商品id
goodsSn 字符串 商品编号
name 字符串 商品名称

返回结果:


{"errno":0,"errmsg":"成功"}

日志 logger.py

import logging


def info(msg):
    """
    日志方法
    :param msg: 要打印到日志中的信息
    :return: info 级别的日志
    """
    
    # 指定 log 日志的存放位置(需要先创建目录,否则会报错)
    # 指定日志的编码格式
    file_handler = logging.FileHandler(filename="../logs/apitest.log", encoding="utf-8")
    # 设置日志的等级
    logging.getLogger().setLevel(logging.INFO)
    # 设置日志的内容格式
    formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(module)s:%(lineno)d %(message)s')
    file_handler.setFormatter(formatter)
    
    steam_handler = logging.StreamHandler()
    # 日志格式与句柄的绑定
    steam_handler.setFormatter(formatter)
    
    # 设置生效
    logging.getLogger().addHandler(file_handler)
    logging.getLogger().addHandler(steam_handler)
    
    return logging.info(msg)