2.5 从API获取数据

将具体调用HTTP请求,获取结果的业务代码封装到YuShuBook中

class YuShuBook:

    search_by_isbn_url = "http://t.yushu.im/v2/book/search/isbn/{}"

    search_by_key_url = "http://t.yushu.im/v2/book/search?q={}&count={}&start={}"

    @classmethod
    def search_by_isbn(cls, isbn):
        url = cls.search_by_isbn_url.format(isbn)
        return HTTP.get(url)

    @classmethod
    def search_by_key(cls, q, count=15, start=0):
        url = cls.search_by_key_url.format(q, count, start)
        return HTTP.get(url)

使用json.dumps 序列表返回结果,在视图函数中进行返回,并声明状态码和返回类型(一个元组)

@app.route("/book/search/<q>/<page>")
def search(q, page):
    """
    搜索书籍路由
    :param q: 关键字 OR isbn
    :param page: 页码
    """
    isbn_or_key = is_isbn_or_key(q)
    if isbn_or_key == 'isbn':
        result = YuShuBook.search_by_isbn(q)
    else:
        result = YuShuBook.search_by_key(q)

    return json.dumps(result), 200, {'content-type': 'application/json'}

可以使用flask提供的jsonify替换麻烦的json.dumps和元组

    return jsonify(result)

Last updated