gpt4 book ai didi

python - 在 python 包中处理硬编码的 URL

转载 作者:行者123 更新时间:2023-12-04 03:23:42 25 4
gpt4 key购买 nike

我正在开发一个使用 API(使用 HTTP 协议(protocol))的 python 包。
在我的包中,我有一个 python 配置文件,其中包含 API URL ( 硬编码 ) 和其他设置。
API URL 保存在全局变量中,因此我可以导入它并在我的包模块中使用它。例如:

API_URL = "https://api-url.com"
配置文件是包的一部分,这意味着一旦用户安装了包,他也会获得包含硬编码 URL 的配置文件。
问题是,在 future 的某个时候,API 的 URL 可能会发生变化,并且包的所有真实性都会被破坏,用户将不得不更新(例如 pip install 等)包。
处理包中硬编码 URL 的正确方法是什么?

最佳答案

这里的常见模式是不对 URL 基础进行硬编码,而是提供一个 API 类,该类将使用相应的 URL 进行实例化。此类还可以获得额外的配置/配置文件:

class MyAPI:
def __init__(self, config_file: str = DEFAULT_CONFIG, **overrides):
self.config = build_config(config_file, overrides)
self.url = self.config.url

@property
def value(self):
return requests.get(urljoin(self.url, "./value"))
然后用户将像这样使用它:
api = MyAPI()

print(api.value)
或者
api = MyAPI(url="NEW_URL")

print(api.value)
这是与 praw 类似的示例。和 wikipedia采用。
如果有不同的 URL 可用于相同/非常相似的界面,这是一个特别好的主意。 (通常至少是现场产品 + 一个测试沙箱)

关于python - 在 python 包中处理硬编码的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68050526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com