Skip to content

colorful3/old-land-flask-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

old-land-flask-api

如果想要使用,请首先在config文件下添加机密配置文件secure.py:

# 数据库配置文件
SQLALCHEMY_DATABASE_URI = 'mysql+cymysql://root:root@127.0.0.1/old_land'
# 安全key
SECRET_KEY = 'your secret key'
# 小程序相关配置
MINA_APPID = 'your mina appid'
MINA_SECRET = 'your mina secret'
MINA_LOGIN_URL = "https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code"

API说明

  • 点赞和取消点赞接口需要携带token
  • token必须通过小程序的code换取
  • 无论是提交数据还是返回数据只支持json
  • API遵从严格的HTTP动作并采用标准的 Http Status Code 作为响应状态,建议采用HTTP状态码作为Api调用是否成功的标识,具体异常请通过错误码判断

返回码

HTTP状态码

状态码 含义 说明
200 OK 请求成功
201 CREATED 创建成功
202 ACCEPTED 更新成功
204 NO CONTENT 删除成功
301 MOVED PERMANENTLY 永久重定向
400 BAD REQUEST 请求包含不支持的参数
401 UNAUTHORIZED 未授权
403 FORBIDDEN 被禁止访问
404 NOT FOUND 请求的资源不存在
413 REQUIRED LENGTH TOO LARGE 上传的File体积太大
500 INTERNAL SERVER ERROR 内部错误

错误码

请以错误码来判断具体的错误,不要以文字描述作为判断的依据

100x 通用类型:

错误码 含义
0 OK, 成功
1000 输入参数错误
1001 输入的json格式不正确
1002 找不到资源
1003 未知错误
1004 禁止访问
1005 不正确的开发者key
1006 服务器内部错误

200x 点赞类型

错误码 含义
2000 你已经点过赞了
2001 你还没点过赞

300x 期刊类型

错误码 含义
3000 该期内容不存在

期刊

获取最新一期

URL:

GET /classic/latest

Response 200:

{
    "content": "人生不能像做菜,把所有的材料准备好才下锅",
    "fav_nums": 2,
    "id": 8,
    "image": "http://127.0.0.1:5000/v1/movie.2.png",
    "index": 8,
    "like_status": 0,
    "pubdate": "2018-08-14",
    "title": "李安《饮食男女》",
    "type": 100
}

Response_description:

  • content:期刊内容
  • fav_nums: 点赞次数
  • image: 图片
  • index: 期号
  • like_status: 是否点赞
  • pubdate: 发布日期
  • title: 期刊题目
  • type: 期刊类型,这里的类型分为:100 电影 200 音乐 300 句子
  • id: 期刊在数据中序号,供点赞使用
  • 返回期刊的详细信息

获取当前一期的下一期

URL:

GET /classic/int:index/next

demo /classic/2/next

Parameters:

  • id:id号,必填,必须是正整数

Response 200:

{
    "content": "你陪我不如蝉夏 越过城市喧嚣",
    "fav_nums": 0,
    "id": 3,
    "image": "http://127.0.0.1:5000/v1/music.2.png",
    "index": 3,
    "like_status": 0,
    "pubdate": "2018-08-14",
    "title": "花弼《纸短情长》",
    "type": 200,
    "url": "http://music.163.com/song/media/outer/url?id=557581284.mp3"
}

获取某一期详细信息

URL:

GET /classic/int:type/int:id

demo /classic/200/1

Parameters:

  • id:id号,必填,必须是正整数
  • type: 类型号,必填,为100,200,300的一种,分别表示电影,音乐,句子

Response 200:

{
    "content": "岁月长,衣裳薄",
    "fav_nums": 0,
    "id": 1,
    "image": "http://127.0.0.1:5000/v1/music.1.png",
    "index": 1,
    "like_status": 0,
    "pubdate": "2018-08-14",
    "title": "杨千嬅《再见二丁目》",
    "type": 200,
    "url": "http://music.163.com/song/media/outer/url?id=557581284.mp3"
}

获取当前一期的上一期

URL:

GET /classic/int:index/next

demo /classic/5/next

Parameters:

  • id:id号,必填,必须是正整数

Response 200:

{
    "content": "在变换的生命里,岁月原来是最大的小偷",
    "fav_nums": 0,
    "id": 4,
    "image": "http://127.0.0.1:5000/v1/movie.1.png",
    "index": 4,
    "like_status": 0,
    "pubdate": "2018-08-14",
    "title": "罗启锐《岁月神偷》",
    "type": 100
}

获取点赞信息

URL:

GET /classic/int:type/int:id/favor

demo /classic/200/7/favor

Parameters:

  • id:id号,必填,必须是正整数
  • type: 类型号,必填,为100,200,300的一种,分别表示电影,音乐,句子
  • token: 通过 Basic Auth方式传递 username: eyJhbGciOiJIUzI1NiIsImlhdCI6MTUzNDUxODQ0MCwiZXhwIjoxNTM3MTEwNDQwfQ.eyJ1aWQiOjEsInR5cGUiOjIwMCwic2NvcGUiOiJVc2VyU2NvcGUifQ.S1YoU30kgUIwYRgyCVeDgL2VvYcTlmeGph6P9Vd2irg, password: ''

Response 200:

{
    "fav_nums": 2,
    "id": 7,
    "like_status": 1
}

获取我喜欢的期刊

URL:

GET /classic/favor

Parameters:

  • token

Response 200:

[
    {
        "content": "人生不能像做菜,把所有的材料准备好才下锅",
        "fav_nums": 2,
        "id": 8,
        "image": "http://127.0.0.1:5000/v1/movie.2.png",
        "index": 8,
        "like_status": 1,
        "pubdate": "2018-08-14",
        "title": "李安《饮食男女》",
        "type": 100
    },
    {
        "content": "谁念过 千字文章 秋收冬已藏",
        "fav_nums": 2,
        "id": 7,
        "image": "http://127.0.0.1:5000/v1/music.4.png",
        "index": 7,
        "like_status": 1,
        "pubdate": "2018-08-14",
        "title": "不才《参商》",
        "type": 200,
        "url": "http://music.163.com/song/media/outer/url?id=557581284.mp3"
    },
    {
        "content": "谁念过 千字文章 秋收冬已藏",
        "fav_nums": 2,
        "id": 7,
        "image": "http://127.0.0.1:5000/v1/music.4.png",
        "index": 7,
        "like_status": 1,
        "pubdate": "2018-08-14",
        "title": "不才《参商》",
        "type": 200,
        "url": "http://music.163.com/song/media/outer/url?id=557581284.mp3"
    }
]

获取热门书籍

URL:

GET /book/hot_list

Response 200:

[
    {
        "author": [
            "Vamei"
        ],
        "fav_nums": 3,
        "id": 13,
        "image": "https://img1.doubanio.com/lpic/s29166309.jpg",
        "like_status": 0,
        "title": "从Python开始学编程"
    },
    {
        "author": [
            "MarkPilgrim"
        ],
        "fav_nums": 2,
        "id": 5,
        "image": "https://img3.doubanio.com/lpic/s4059293.jpg",
        "like_status": 0,
        "title": "Dive Into Python 3"
    }
]

获取书籍短评

URL:

GET /book/int:book_id/shot_comment

Parameters:

  • book_id:书籍的id,必填,必须为正整数
  • Response 200:
{
    "book_id": 1,
    "comment": [
        {
            "book_id": 1,
            "content": "这个书不错",
            "nums": 1
        },
        {
            "book_id": 1,
            "content": "而是的回忆!七龙珠",
            "nums": 9
        },
        {
            "book_id": 1,
            "content": "回忆杀!",
            "nums": 19
        }
    ]
}

Response_description:

  • comment: 一个评论的列表,包含用户对书籍的评论及对应数量的字典
  • book_id: 书籍id

Parameters:

response_description:

  • fav_nums:点赞数
  • id: 书籍id
  • like_status: 是否点赞
  • author: 作者
  • title: 书籍题目
  • image: 书籍图片
  • 返回一个列表,包含所有热门书籍的概要信息

获取喜欢书籍数量

URL:

GET /book/favor/count

Parameters:

  • token
{
    "count": 1
}

Response_description:

  • count: 返回我喜欢的书籍数量

获取书籍点赞情况

URL:

GET /book/int:book_id/favor

Parameters:

  • book_id:书籍的id,必填,必须为正整数

Response 200:

{
    "fav_nums": 0,
    "id": 1,
    "like_status": 0
}

新增短评

URL:

POST /book/add/comment

Parameters:

  • book_id:书籍id
  • content:评论内容,我们可允许的评论内容范围为12字以内

Response 201:

{
    "error_code": 0,
    "msg": "OK",
    "request": "POST /v1/book/add/short_comment"
}

获取热搜关键字

URL:

GET /json

Response 200:

{
    "hot": [
        "鸟山明",
        "龙珠",
        "http",
        "PHP",
        "",
        "",
        "火箭",
        "阿斯达",
        "\bphp",
        "\bpython3",
        "鲁迅",
        "python"
    ]
}

书籍搜索

URL:

GET /book/search

demo1 /book/search?q=七龙珠

demo2 /book/search?q=七龙珠&summary=1

Parameters:

  • start: 开始记录数,默认为0
  • count: 记录条数,默认为20,超过依然按照20条计算
  • summary: 返回完整或简介,默认为0,0为完整内容,1为简介
  • q:搜索内容

Response 200:

当summary=0,返回详细数据:

{
    "books": [
        {
            "author": [
                "[日]鸟山明"
            ],
            "category": "日本漫画",
            "id": 17699,
            "image": "https://img1.doubanio.com/lpic/s28671937.jpg",
            "isbn": "9787600100354",
            "pages": "全42册",
            "price": "367.6",
            "pubdate": "2005-7-1",
            "publisher": "中国少年儿童出版社",
            "subtitle": "",
            "summary": "《DRAGON BALL》译名《龙珠》(又名:七龙珠)是日本著名漫画家鸟山明的得意作品,1984年登场,1992年又推出『龙珠』续集。这部长篇巨作在『少年跳跃』上连载7年。\\n故事讲述了孙悟空(当然不是我们神化中的那个齐天大圣喽)父子和那7颗能满足人们心愿的龙珠,把读者从山村引到城市,从地球引到外星,又从现在引到未来。\\n根据《龙珠》的漫画故事,还推出了《龙珠》的系列动画片,无论是TV版还是剧场版,都吸引了无数的龙珠迷,掀起了一股股“龙珠”的热潮。\\n龙珠的舞台,虽说是带有中国色彩的,但是也并非就限定在中国;时代也一样,并没有把它固定在某一个具体时间。整个故事架构很简单,至于一些细节和结局,我想任其自由发展。这么一来,连我自己也会想[故事下一步会怎么发展啊],并为之捏了一把汗。因为无论怎么发挥都可以,所以乐在其中。\\n传说中,地球四处散落着7颗龙珠。如果谁将他们收集起来就可以实现自己的愿望,人们为了得到它而不断的你争我夺……每年都会有一场以龙珠为奖品的《天下第一武道大会》……在地球的一个角落,生活着孙悟空这个茁壮的孩子,他的身份其实是赛亚人卡卡罗特。因为婴儿时的变身能力不够而被派往地球,其实是为了毁灭地球生物而变成殖民地,但他生来和平,丝毫不知自己的身世……这种战斗力超强的种族“赛亚人”与宇宙中另一些种族“那美克星人”等等间发生了无数惊险有趣又富有教育意义的故事……这就是日本著名漫画家“鸟山明”创造的《七龙珠》世界。",
            "title": "龙珠(全42册)",
            "translator": [
                "牟琳"
            ]
        },
        {
            "author": [
                "[日]鸟山明"
            ],
            "category": "日本漫画",
            "id": 18569,
            "image": "https://img3.doubanio.com/lpic/s11231433.jpg",
            "isbn": "9787500774860",
            "pages": "175",
            "price": "6.9",
            "pubdate": "2005-7",
            "publisher": "中国少年儿童出版社",
            "subtitle": "孙悟空和伙伴们",
            "summary": "《龙珠(套装共42册)》是日本著名漫画家鸟山明的得意作品。相传,有七颗龙珠散落在世界的各个角落,当它们被聚集到一起时神龙就会出现,能够实现你的任何一个愿望。这个一个美丽的的传说引出了小悟空和他的朋友们寻找龙珠的故事。",
            "title": "龙珠1",
            "translator": [
                "牟琳"
            ]
        }
    ],
    "count": 20,
    "start": 0,
    "total": 2
}

当summary=1,返回概要数据:

{
    "books": [
        {
            "author": [
                "[日]鸟山明"
            ],
            "id": 17699,
            "image": "https://img1.doubanio.com/lpic/s28671937.jpg",
            "isbn": "9787600100354",
            "price": "367.6",
            "title": "龙珠(全42册)"
        },
        {
            "author": [
                "[日]鸟山明"
            ],
            "id": 18569,
            "image": "https://img3.doubanio.com/lpic/s11231433.jpg",
            "isbn": "9787500774860",
            "price": "6.9",
            "title": "龙珠1"
        }
    ],
    "count": 20,
    "start": 0,
    "total": 2
}

获取书籍详细信息

URL:

GET /book//detail

demo /book/6548683/detail

Parameters:

id: 书籍的id号,从豆瓣API获取

Response 200:

{
    "author": [
        "申音"
    ],
    "category": "",
    "id": "6548683",
    "image": "https://img1.doubanio.com/view/subject/m/public/s6569607.jpg",
    "isbn": "9787807674030",
    "pages": "262",
    "price": "35.00元",
    "pubdate": "2011-7-1",
    "publisher": "山西经济出版社",
    "subtitle": "为何普世商业价值在中国行不通",
    "summary": "★为什么美国没有史玉柱,中国没有乔布斯?\n★什么是“对的行业”、“错的行业”?\n★我们需要什么样的营销?\n★老板为什么要读商学院?\n★山寨公司还需要管理吗?\n★资源问题是个“伪问题”?\n★别把商业模式当成葵花宝典\n★给海归技术创业兄弟的九个忠告\n★在一个不伟大的行业里,做一个伟大的公司\n★是什么让互联网遭遇了有史以来最鸡犬不宁的一战?",
    "title": "商业的常识",
    "translator": ""
}

点赞

进行点赞

URL:

POST /like

Parameters:

  • art_id: 点赞对象,例如你想对电影进行点赞,那这个参数就是电影的id号
  • type:点赞类型分为四种:100 电影 200 音乐 300 句子 400 书籍

Response Status 201:

{
    "error_code": 0,
    "msg": "OK",
    "request": "POST /v1/like"
}

取消点赞

URL:

POST /like/cancel

Parameters:

  • art_id: 点赞对象id
  • type:点赞类型

Response Status 201:

{
    "error_code": 0,
    "msg": "OK",
    "request": "POST /v1/like"
}

小程序登录

获取token

URL:

POST /token/mina

Parameters:

  • code: wx.login API获取的code值。

Response Status 200:

{
    "token" : "eyJhbGciOiJIUzI1NiIsImlhdCI6MTUzNDUxODQ0MCwiZXhwIjoxNTM3MTEwNDQwfQ.eyJ1aWQiOjEsInR5cGUiOjIwMCwic2NvcGUiOiJVc2VyU2NvcGUifQ.S1YoU30kgUIwYRgyCVeDgL2VvYcTlmeGph6P9Vd2irg"
}

Response_description:

  • token: 供需要权限认证的接口请使用

验证token

Parameters:

  • token: 需要权限认证的接口请使用HTTP BASIC方式在header头中传递token,headers中的键名为 Authorization, 键值为 base64(basic token:'')

Response Status 200:

{
    "error_code": 1008,
    "msg": "token is invalid",
    "request": "POST /v1/like/cancel"
}

About

参照慕课网七月老师的《旧岛小样》api文档,使用flask做了所有接口的代码实现

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published