02-图书数据搜索与查询(数据API、搜索关键字、简单重构)
图书关键字搜索API
http://t.talelin.com/v2/book/search?q={}&start={}&count={}

图书isbn搜索API
http://t.talelin.com/v2/book/isbn/{isbn}

前提准备,使用requests调用get和post请求
pip安装:pip install requests
import requests class HTTP: # 发送GET请求 def get(self, url, return_json=True): response = requests.get(url) if response.status_code == 200: if return_json: return response.json() else: return response.text else: print(f"Error: {response.status_code}") return None # 发送POST请求 def post(self, url, data, headers={}, return_json=True): response = requests.post(url, data=data, headers=headers) if response.status_code == 200: if return_json: return response.json() else: return response.text else: print(f"Error: {response.status_code}") return None
从API获取数据并返回
from flask import Flask, make_response, jsonify from httpTest import HTTP # 实例化flask对象 app = Flask(__name__) # 关键字搜索:http://t.talelin.com/v2/book/search?q={}&start={}&count={} # isbn搜索: http://t.talelin.com/v2/book/isbn/{isbn} @app.route('/book/search/<q>') def search(q): """ :param q: 普通关键字 isbn :param page: 分页 :return: """ # 调用is_isbn_or_key方法,判断q是关键字还是isbn isbn_or_key = is_isbn_or_key(q) isbn_url = "http://t.talelin.com/v2/book/isbn/{}" key_url = "http://t.talelin.com/v2/book/search?q={}&start={}&count={}" # 根据isbn_or_key的值,获取相应的url if isbn_or_key == "isbn": url = isbn_url.format(q) result = HTTP.get(url) else: url = key_url.format(q, 1, 5) result = HTTP.get(url) return jsonify(result), 200 def is_isbn_or_key(q): # 默认q为关键字 isbn_or_key = "key" # 判断q是否为isbn # isbn13 是由13位0到9数字组成的字符串 # isbn10 是由10位0到9数字组成,含有一些 "-" if q.isdigit() and len(q) == 13: isbn_or_key = "isbn" short_q = q.replace("-", "") if q.isdigit() and len(short_q) == 10 and q in "-": isbn_or_key = "isbn" return isbn_or_key if __name__ == '__main__': app.run(host="0.0.0.0", debug=True, port=5000)


关键字搜索
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号