小编DrP*_*p3r的帖子

Python 中的 REST API 与 FastAPI 和 pydantic:模型中的只读属性

假设一个 REST API 在资源 /foos 上定义了一个 POST 方法来创建一个新的 Foo。创建 Foo 时,Foo 的名称是一个输入参数(存在于请求正文中)。当服务器创建 Foo 时,它会为其分配一个 ID。此 ID 与 REST 响应中的名称一起返回。我正在寻找类似于 OpenAPI 中的 readOnly 的东西。

输入 JSON 应如下所示:

{
    "name": "bar"
}
Run Code Online (Sandbox Code Playgroud)

输出 JSON 应如下所示:

{
    "id": 123,
    "name": "bar"
}
Run Code Online (Sandbox Code Playgroud)

有没有办法重用相同的 pydantic 模型?或者是否有必要使用两种不同的模型?

class FooIn(BaseModel):
    name: str

class Foo(BaseModel):
    id: int
    name: str
Run Code Online (Sandbox Code Playgroud)

我在 pydantic 文档或 Field 类代码中找不到任何提及“只读”、“只读”或“只读”的内容。

谷歌搜索我发现一个帖子提到

id: int = Schema(..., readonly=True)
Run Code Online (Sandbox Code Playgroud)

但这似乎对我的用例没有影响。

python rest python-3.x pydantic fastapi

6
推荐指数
1
解决办法
8274
查看次数

具有更高意义的简单类型(C++ 11)

我经常遇到这种情况(在我的C++/C++ 11代码中),其中我的类型基本上像内置类型(或类似的"基本简单"类型std::string),但其含义超过32位号或一堆字符.我没有在互联网上找到任何有用的东西,因为我真的没有什么条件可以搜索...

例子:

  • 我曾经在一个系统上工作,其中的项目是通过ID识别的.这些ID是std::strings(首先可能不是最好的主意,但这是一个不同的故事).但真正糟糕的是,这些ID以std::strings或const char*s的形式通过系统传递.因此,在搜索类型时,很难(不可能)判断代码库ID中的位置.变量名称是ID(ID,id,Id)或密钥的全部变体,或者只是i或名称或其他.所以你也不能按名字搜索.所以我更愿意将这些变量作为类型传递id_t.
  • 网络端口:它们是uint16_ts.但我想把它们作为network_port_ts 传递给我们.

我通常使用typedef使事情变得更好.这种方法有许多问题:

  • 您不必使用typedef.您仍然可以通过"原始"类型传递变量(例如,std::string而不是id_t).
  • 如果原始类型是模板,则完成前向声明typedef(例如,使用shared_ptr).
  • "转发声明"typedef是一个维护问题.如果原始类型发生变化,您可以在整个地方更改内容.

我尝试使用网络端口示例的另一件事是编写一个瘦的包装类运动operator uint16_t.这解决了前向声明的问题.但后来我遇到了一些陷阱,其中包含一些内部使用printf的日志记录宏.printfs仍然工作(好,编译),但没有打印端口号,但(我认为)对象的地址.

我认为尺寸像重量或长度Boost.Units可能值得一看(即使它看起来有点"沉重").但是对于上面的两个例子,它并不合适.

实现我想要的最佳实践是什么(使用Boost是一种选择)?

简而言之: 我想要实现的是将"具有更高意义的类型"作为自己的类型而不是普通的原始/低级/非抽象类型.(有点像)具有用户定义的类型.优选地,没有为具有基本相同的实现的每种类型编写完整类的巨大开销,仅仅能够执行已经可以执行的内置操作.

c++ boost c++11

5
推荐指数
2
解决办法
742
查看次数

libcurl 是否支持 RTSPS?

我正在尝试使用 libcurl 通过 TLS 与 RTSP 服务器通信。

当尝试向服务器发送 RTSPS 请求时,curl 请求失败:

libcurl 错误:“libcurl 中不支持或禁用协议“rtsps”

libcurl 使用 RTSP 支持 (enable-rtsp) 构建,并且普通的 RTSP 请求可以工作。

libcurl 是否支持 RTSPS?

如果不是为什么不呢?RTSPS 和 HTTPS 之间的技术差异是什么导致这个问题?

我使用的嵌入式平台目前正在使用该库的 7.72.0 版,但如果这是问题,我可以更新)。

我在 Google 或 curl.se 上没有直接找到有关 RTSPS 支持的任何信息。

RTSP示例仅显示 RTSP。

c ssl libcurl

1
推荐指数
1
解决办法
205
查看次数

标签 统计

boost ×1

c ×1

c++ ×1

c++11 ×1

fastapi ×1

libcurl ×1

pydantic ×1

python ×1

python-3.x ×1

rest ×1

ssl ×1