2.4 requests vs urllib
发送http请求的两种方法: 1.使用urllib(python内置) 2.使用requests(需要使用pip3安装)
urllib的用法: urlib的一些缺点: 1.需要对url进行编码,并且有些字符不需要编码还要声明出来 2.返回的结果是字节码,需要包装成字符串 3.404的情况是通过异常的形式抛出,现在流行的restful,404已经不是一种异常了
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
Was this helpful?