python - 重用 url 请求方法
问题描述
我有一门课提供了很多类似的方法:
class Helper:
BASE_URL = "xxx:xxx"
@staticmethod
def get_A():
url = BASE_URL + "/a?"
resp = requests.get(url)
ret_json = json.loads(resp.content)
return [r["id"] for r in ret_json["people"]]
@staticmethod
def get_B():
url = BASE_URL + "/b/list"
resp = requests.get(url)
ret_json = json.loads(resp.content)
return {r["name"]: r["gender"] for r in ret_json["people"]}
@staticmethod
def post_C():
url = BASE_URL + "/admin/c"
resp = requests.post(url)
ret_json = json.loads(resp.content)
return ret_json["date"]
......
@staticmethod
def get_Z():
.......
我怎样才能重用url = BASE_URL + diff_url; resp = requests.get(url); ret_json = json.loads(resp.content)
这些方法中的部分并让它们返回不同的部分, ret_json
或者只是保持原样?
要清楚
我怎样才能将这些方法组合成这样一个:
def get_something(*arg, **kwargs):
url = BASE_URL + ...
resp = requests.get/post(url)
ret_json = json.loads(resp.content)
return "different part of ret_json"
解决方案
使用辅助函数来执行这些函数共有的事情。并用于requests.request
允许通过不同的 HTTP 方法进行请求。
class Helper:
BASE_URL = "xxx:xxx"
@staticmethod
def request(method, path):
url = BASE_URL + path
resp = requests.request(method, url)
return json.loads(resp.content)
@staticmethod
def get_A():
ret_json = Helper.request('GET', "/a?")
return [r["id"] for r in ret_json["people"]]
@staticmethod
def get_B():
ret_json = Helper.request('GET', "/b/list")
return {r["name"]: r["gender"] for r in ret_json["people"]}
@staticmethod
def post_C():
ret_json = Helper.request('POST', "/admin/c")
return ret_json["date"]
推荐阅读
- c++ - 这种错误的原因是什么:将“功能”重新定义为不同类型的符号
- python - 旋转包含字符串的 Pandas 数据框 - 仅在第一次添加列,否则在任何列中添加值
- java - Spring Boot JPA - ManyToOne 关系导致额外的 sql
- javascript - 当我将变量传递给函数并在内部修改时,变量不会改变
- c++ - C/C++ 在 x86 应用程序中使用 x64 结构参数导入 WinAPI 函数
- java - 为 jdk 8 编译时,maven-javadoc-plugin 在 jdk 11 上失败
- emacs - 删除返回文件名的后缀
- shell - 在shell中循环浮动值增量
- git - Jenkins not recognizing the git sub-directory
- c - 程序无法加载共享库 GCC