我想构建一个类似于< code>/cities的endpoint。population__gt=100000获取人口超过100,000的所有城市。
在FastAPI中最好的方法是什么?我不喜欢列举给定字段的所有可能的操作符,比如:
@app.get("/cities")
def get_city(
population: int = None,
population_gt: int = None,
population_gte: int = None,
population_lt: int = None,
population_lte: int = None):
return ...
实现这一点的一种方法是传递运算符
(即gt
、lt
等),并为每个操作都有一个单独的函数,如果收到运算符,您可以调用该函数。下面的示例。您可以根据需要调整/添加函数。
def gt(population):
return f"operator: gt, population: {population}"
def gte(population):
return f"operator: gte, population: {population}"
def lt(population):
return f"operator: lt, population: {population}"
def lte(population):
return f"operator: lte, population: {population}"
operators = {"gt": gt, "gte": gte, "lt": lt, "lte": lte}
@app.get("/cities")
def get_city(population: int = None, operator: str = None):
if operator in operators:
result = operators[operator](population)
return result
else:
return "Operator Not Found!"
正如您刚才所说,因为这是多个参数所需要的,所以我建议使用类似的方法,您可以在每个键的值中传递运算符,然后在服务器端提取它,例如/city?人口=~gt~100000
要接收查询参数的多个值,例如上面给出的示例URL中的
总体
,执行诸如之类的操作,其中总体大于
下面的示例让您了解了使用
人口
参数的这种方法背后的逻辑,并展示了如何在服务器端提取运算符和实际值。然后由您定义所需的其余参数,以及如何处理这些数据;例如,使用与上面类似的方法(每个操作都有一个函数),或者在循环数据时构建将要传递到数据库的查询。
import re
pattern = "~(.*?)~"
@app.get("/cities")
def get_city(population: List[str] = Query(None)):
pop_qs = {}
for p in population:
try:
pop_opr = re.search(pattern, p).group(1)
pop_no_str = re.sub(r"^~.*?~", "", p)
except:
return "Invalid data received"
try:
pop_no = int(pop_no_str)
pop_qs.update({pop_opr : pop_no})
except ValueError:
return f"Cannot convert '{pop_no_str}' to Integer."
return pop_qs
我有一种情况,我需要检查金额并相应地返回回复。 如果金额是 请参考请求正文中的示例json。 {“帐户名称”:“ABCZYZ”、“特殊代码”:“MYCODE”、“金额”:“100”、“货币类型”:“MYCURRENCY”} 下面是我的wiremck映射文件 {“request”:“{“urlPattern”:“/some/url”,“method”:“POST”,“bodyPatterns”:[{
我正在编写一个Fast API服务器,它接受请求,检查用户是否被授权,如果成功,则将其重定向到另一个URL。 我需要携带URL参数,例如
我不明白 FastAPI 中的可选查询参数。它与默认值为 的默认查询参数有何不同? 在下面的示例中,arg1和arg2有什么区别?在该示例中,arg2是一个可选的查询参数,如上面的链接所述。
我12哟,我学习Java,我想做如果语句时,它是超过1和小于或等于4,或只是2和4之间,但它不工作。我试过了 <代码>如果(4 它显示了这个错误
问题内容: 我有几个查询,其中大多数是: 和 由于它们都是一个范围,因此在col和date上使用未聚类的b +树索引会是加快查询速度的一个好主意吗?还是哈希索引?还是没有索引会更好? 问题答案: 在 过滤谓词上 用作 日期范围条件 的列上创建 INDEX 应该很有用,因为它将执行 INDEX RANGE SCAN 。 这是有关如何在Oracle中创建,显示和阅读EXPLAIN PLAN 的演示。
问题内容: 我熟悉Swift中的语句,但想知道如何用来替换这段代码: 问题答案: 这是一种方法。假设是或其他,则可以选择将操作数分配给新变量。这样,您就可以使用关键字来对其进行范围划分: 可以简化一下: 您还可以完全避免关键字与范围匹配: