essayZW / BUCTWXServices

BUCT轻触 小程序后端代码,以python实现
6 stars 0 forks source link
python

BUCTWXServices

BUCT轻触 小程序后端项目

前端代码仓库:https://github.com/essayZW/BUCTWXServicesFront

注意事项

  1. 开发时需要修改app/config.py中的debugTrue,这样可以开启Flask的Debug模式,并且忽略接口需要的Token安全验证

  2. 一个功能模块使用一个Flask蓝图,对应一个app/view/ 下的python文件,添加新的view视图文件需要在app/view/__init__.py中做相应的引入。

    例如:

    现有文件app/view/test.py,其代码内容如下

    # 引入蓝图功能
    from flask import Blueprint
    
    '''
    引入对应的模型
    其文件为app/model/test_model.py
    '''
    from ..model import test_model
    # 创建一个蓝图,在main.py中注册
    testBlueprint = Blueprint('test', __name__)
    
    @testBlueprint.route('/')
    def index():
       # 调用模型中的函数
       # 模型在下一条中讲到,这里返回hello world
       return test_model.test()

    因此需要在app/view/__init__.py中添加如下代码

    '''
    从当前的目录下引入test.py文件
    '''
    from . import test

    来保证正确引入视图,在main.py中通过以下绑定蓝图

    from app import view # 引入所有的视图
    from app import App  # 引入应用实例
    '''
    注册了view/test.py中的testBlueprint蓝图对象
    '''
    App.register_blueprint(view.test.testBlueprint, url_prefix = '/test')

    这样就可以访问/test/路径获得了输出hello world

  3. 若视图需要数据库支持,需要将数据库相关代码在app/model中创建模型,并且在app/model/中引入相关文件。

    另外数据库的配置需要导入配置文件app/config.py

    现有模型文件app/model/test_model.py

    # 导入父目录中的config.py中的AppConfig配置数组
    from ..config import AppCofig
    
    def test():
       return 'hellow world!'

    app/model/__init__.py中需要添加如下代码以引入改模型

    '''
    测试代码,在这里引入该包下面的test_model.py
    '''
    from . import test_model

    app/view/test.py视图中引入模型

    '''
    引入对应的模型
    其文件为app/model/test_model.py
    '''
    from ..model import test_model

    就可以通过test_model.test()调用模型中的函数

  4. 所有包中的__init__.py文件首行应该注明当前路径,以防止多个__init__.py混淆

    app/model/__init__.py

    # app/model/__init__.py
    
    '''
    测试代码,在这里引入该包下面的test_model.py
    '''
    from . import test_model
    # 测试代码结束
  5. 导入爬虫以及相关的自定义的模块

    所有的爬虫模块或者自定义的模块都应该放在app/module目录下面,如现有爬虫模块jwrobot

    module
    │  __init__.py
    │
    ├─jwrobot
    │  │  hex2b64.py
    │  │  robot.py
    │  │  RSAJS.py
    │  │  __init__.py

    这是目录结构,其中app/module/__init__.py中需要引入模块

    # 教务类
    from . import jwrobot

    至于jwrobot 这个模块就自定义__init__.py文件。

    app/view/jw.py中使用该模块

    # 引入教务爬虫
    from ..moudle.jwrobot import Robot
    '''
    其意思是从当前目录的上一个目录(app/)中的module模块中的jwrobot模块中引入其中的一个Robot类
    或者这样也可以引入
    from ..module import jwrobot
    这样就引入了整个jwrobot模块,调用爬虫就需要使用jwrobot.Robot
    '''
  6. 对应所有module下的__pycache__文件应该在.gitignore文件中忽略,其实缓存文件,没必要使用git管理

    比如现有.gitignore文件内容如下:

    test.py
    # pycache
    app/__pycache__/
    app/**/__pycache__/
  7. API返回数据的大概格式

    {
       'status' : True, // 此次请求是否成功
       'info'   : '',    // 请求处理的相关信息,一般成功了的话就是success,失败的话就是大概的错误信息
       'data'    : ''    // 所请求的数据,没有则为空
    }

    以上三项是必须的,可以适当增加,但是必须要在文档说明

    教务管理系统

成绩查询

成绩查询包含两个部分

查询学年学期成绩

URL: /jw/getAllGrade

Method: POST

Params:

参数名 类型 说明
xnm int 学年编号
xqm int 学期编号
username string 教务用户名
password string 教务密码
vpnusername string w.buct.edu.cn 用户名
vpnpassword string w.buct.edu.cn 密码

Response Type: JSON

Response Date:

{
    'status' : True, // 此次请求是否成功
    'info'   : '',    // 请求处理的相关信息,一般成功了的话就是success,失败的话就是大概的错误信息
    'data'   : '',   // 所请求的数据,没有则为空
    'sinfo'  : ''    // 该学生的班级以及名字信息
}

查询指定科目成绩

URL: /jw/getSingleGrade

Method: POST

Params:

参数名 类型 说明
xnm int 学年编号
xqm int 学期编号
classm string 课程名称(中文)
username string 教务用户名
password string 教务密码
vpnusername string w.buct.edu.cn 用户名
vpnpassword string w.buct.edu.cn 密码

Response Type: JSON

Response Date:

{
    'status' : True, // 此次请求是否成功
    'info'   : '',    // 请求处理的相关信息,一般成功了的话就是success,失败的话就是大概的错误信息
    'data'   : ''    // 所请求的数据,没有则为空
}

查询学生基本信息

该项目包含一个API,查询学生的姓名,以及班级

查询信息

URL: /jw/getStuInfo

Method: POST

Params:

参数名 类型 说明
username string 教务用户名
password string 教务密码
vpnusername string w.buct.edu.cn 用户名
vpnpassword string w.buct.edu.cn 密码

Response Type: JSON

Response Date:

{
    'status' : True, // 此次请求是否成功
    'info'   : '',    // 请求处理的相关信息,一般成功了的话就是success,失败的话就是大概的错误信息
    'data'   : ''    // 所请求的数据,没有则为空
}

查询GPA

URL:/jw/getGpa

Method:POST

Params:

参数名 类型 说明
username string 教务用户名
password string 教务密码
vpnusername string w.buct.edu.cn 用户名
vpnpassword string w.buct.edu.cn 密码

Response Type: JSON

Response Date:

{
    'status' : True, // 此次请求是否成功
    'info'   : '',    // 请求处理的相关信息,一般成功了的话就是success,失败的话就是大概的错误信息
    'data'   : ''    // 所请求的数据,没有则为空
}

查询课表

URL:/jw/getSchedule

Method: POST

Params:

参数名 类型 说明
xnm int 学年编号
xqm int 学期编号
username string 教务用户名
password string 教务密码
vpnusername string w.buct.edu.cn 用户名
vpnpassword string w.buct.edu.cn 密码

ResponseType:JSON

Response Date:

{
    'status' : True, // 此次请求是否成功
    'info'   : '',    // 请求处理的相关信息,一般成功了的话就是success,失败的话就是大概的错误信息
    'data'   : ''    // 所请求的数据,没有则为空
}

考试信息查询

URL:/jw/getExamInfo

Method: POST

Params:

参数名 类型 说明
xnm int 学年编号
xqm int 学期编号
username string 教务用户名
password string 教务密码
vpnusername string w.buct.edu.cn 用户名
vpnpassword string w.buct.edu.cn 密码

ResponseType:JSON

Response Date:

{
    'status' : True, // 此次请求是否成功
    'info'   : '',    // 请求处理的相关信息,一般成功了的话就是success,失败的话就是大概的错误信息
    'data'   : ''    // 所请求的数据,没有则为空
}

小程序反馈接口

此模块暂时由一个接口。

添加反馈信息

URL:/feedBack/add

Method: POST

Params:

参数名 类型 说明
content string 反馈内容,不超过400,必须
email string 邮箱
use_score integer 使用操作分数
style_score integer 界面样式分数
function_score integer w.buct.edu.cn 用户名
time string 提交时间,是一个时间戳

ResponseType:JSON

Response Date:

{
    'status' : True, // 此次请求是否成功
    'info'   : '',    // 请求处理的相关信息,一般成功了的话就是success,失败的话就是大概的错误信息
    'data'   : ''    // 所请求的数据,没有则为空
}

小程序页面设置

该模块的视图提供了对于小程序的一些设置,小程序获取这些设置以更新部分内容

得到首页轮播图设置

URL:/swiper/getAll

Method: POST

Params:None

ResponseType:JSON

Response Date:

{
    'status' : True, // 此次请求是否成功
    'info'   : '',    // 请求处理的相关信息,一般成功了的话就是success,失败的话就是大概的错误信息
    'data'   : [
        'type' : '' //该轮播的类型,src代表页面跳转,alert代表弹出信息
        'dataset' : {
            'src': '', // 如果是src类型则该条描述了跳转至何处
            'alertcontent' : '' // 如果是alert类型则给该条携带了显示的信息
        },
        'image' : ''    // 轮播图的图片地址
    ]
}