我想定义一个函数的可能输入列表,类似于枚举。该应用程序用于http请求,我想为请求创建一个包装器来处理错误。包装器将需要请求类型参数,get、put、delete 等。确保请求类型是合法输入的最佳方法是什么?
这是我已经尝试过的代码。回复是
请求类型:request_type_library.request_type
未知的请求类型。默认获取。有效请求类型:{
import requests
from enum import Enum, auto
class RequestTypeLibrary(Enum):
request_type = auto()
request_type_dictionary = {RequestTypeLibrary.request_type: ["GET","PUT","DELETE"]}
class RequestTypeLoader:
def __init__(self, request_type: RequestTypeLibrary):
self.request_type = request_type
def load_request_type(self):
print(f"loaded request type: {request_type_dictionary[self.request_type]}")
def request_wrapper(request_type: RequestTypeLibrary,url,timeout=10):
print("request type:", request_type)
if request_type=="GET":
r= requests.get(url,timeout=timeout)
elif request_type=="PUT":
r= requests.put(url,timeout=timeout)
elif request_type=="DELETE":
r= requests.delete(url,timeout=timeout)
else:
r= requests.get(url,timeout=timeout)
print("Uknown request type. Defaulted to get. Valid Request types: ", request_type_dictionary)
return r
r = request_wrapper(request_type=RequestTypeLibrary.request_type,url=url,timeout=10,)
确保请求类型是合法输入的最佳方法是什么?
因此创建枚举状态。
import enum
class RequestType(enum.StrEnum):
GET = enum.auto()
POST = enum.auto()
PUT = enum.auto()
DELETE = enum.auto()
您可以断言该值是合理的。一些东西,未经测试。
def request_wrapper(request_type: RequestType, ...):
assert isinstance(request_type, RequestType)