当前位置: 首页 > 知识库问答 >
问题:

如何使用 FastAPI 对多个实例进行 GET 查询?

东门阳飇
2023-03-14

我正在尝试使用FastAPI构建一个web应用程序。

启动web应用程序并将此URL输入web浏览器后:

http://localhost:8080/mall/customers/segmentation?genre=Female&age=65&income=38&spending=35

该应用程序将返回一个实例的预测(例如,一个65岁的女性客户,收入38K,支出35K)

如何修改上述 URL 以查询两个观察结果,例如:收入为 38K 且花费 35K 的 65 岁女性客户和收入为 40K 且花费 37K 的 50 岁男性客户?

共有2个答案

能文华
2023-03-14

据我所知,您正在使用GET查询,它实际上不适合查询多个数据。

我建议您将其移动到POST请求并使用如下内容作为正文:

data = [
{
    "gender": "Female", 
    "age": 64,
    "income": 65,
    "spending": 35,

},
{
    "gender": "Male", 
    "age": 33,
    "income": 120,
    "spending": 35,

}...
]

或者如果你坚持使用GET,你可以尝试使用编码:例如{foo:['1','2','3']}可以编码为:

'foo[]=1&foo[]=2&foo[]=3'
'foo[0]=1&foo[1]=2&foo[3]=3'
'foo=1,2,3'
'foo=1&foo=2&foo=3'
// Any custom separator can be used:
'foo=1|2|3'
// ... and more custom formats
董弘新
2023-03-14

我强烈建议您将数据作为请求正文(以JSON形式)发送,而是使用POST请求,如留档中所述。您可以像上面的留档中描述的那样创建一个Py

from pydantic import BaseModel
from typing import List
from typing import Literal

class Item(BaseModel):
    gender: Literal['male', 'female']
    age: int
    income: int
    spending: int

@app.post("/items")
def create_item(items: List[Item]):
    return items

但是,如果您仍然需要使用< code>GET请求和查询参数(我不建议这样做),您可以定义用< code>Query显式声明的< code>List字段,以便< code>gender 、< code>age等。,可以在URL中出现多次,并且您必须遍历所有参数来获得您的实例(参见这里和这里)。或者,您可以使用任意查询参数,以适合您获取实例的形式发送数据。您可以使用< code>Request对象获取查询参数,即< code>request.url.query或< code > Request . query _ params (有关更多详细信息,请参见此答案)。但是,通过这种方式,您的数据将不会被验证,因此,您需要确保您的输入数据具有正确的类型和必需的参数。

 类似资料:
  • 问题内容: 因此,我想做的是将Maven插件jetty配置为在不同的端口和不同的应用程序上运行多个(在我的情况下为两个)jetty服务器实例。 所以,我想要一个类似的东西: 我想用一个命令执行此操作:mvn jetty:run当然这意味着我必须在pom.xml中对其进行配置 我已经有两个不同的jetty配置文件:jettyA.xml和jettyB.xml,其中定义了不同的连接器。问题是我无法弄清楚

  • 问题内容: 我希望一些查询参数是可选的。至于现在,我有 但是在这种情况下,请求中必须包含“用户名”和“电子邮件”。我想要一个更灵活的选择:使用2个或仅选择其中之一(但不设置零参数)。 谢谢! 问题答案: 因此,我找到了将逻辑重写为的解决方案: 在其中我们可以有类似以下内容:

  • 问题内容: 我需要部署同一LAMP(或LEMP)应用程序的许多实例: 每个实例都可以使用前端负载均衡器/代理从一个子域访问 每个实例必须具有自己的数据库数据和文件数据。 每个实例都可能受到监视 内存限制/ CPU可能会针对每个应用实例设置 易于自动化新的Webapp实例的部署 测试和开发环境可能很容易重现。 申请要求: dameon过程(,,) 二进制文件(,,…) 其他系统特定的库和配置 阅读D

  • 我正在使用 Spring 框架和 Spring 数据,我需要在处理完成时锁定数据库表中的特定行,因此在处理完成之前,没有其他人可以访问数据并更改它。同时,我正在运行同一应用程序的多个实例。 的使用是否会以这样的方式锁定数据库中的特定行,即当一个应用程序实例访问该行时,同一应用程序的其他实例将无法访问该行,而这些实例可以同时尝试从数据库访问同一行? 有一个问题讨论了锁类型之间的差异,与。明确地说,我

  • 我正在尝试使用FastAPI MongoDB创建一个API,它可以从请求中返回多个值。MongoDB充满了数据,使用mongoengine,我可以在向特定endpoint发送请求时查阅一个或所有数据。我现在要做的是从endpoint接收一个或多个数据,例如: 当查询endpoint< code > http://127 . 0 . 0 . 1:8000/rice 时,我得到一个JSON响应,其中包

  • 问题内容: 我有一个包含Quote对象的数组列表。我希望能够按名称,更改和更改百分比的字母顺序进行排序。如何排序我的数组列表? 问题答案: 创建一个合适的对象,它将根据你所需的条件比较两个项目。然后在你的上使用 。 如果以后要按其他条件排序,请使用不同的再次调用。