假设一个 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)
但这似乎对我的用例没有影响。
我经常遇到这种情况(在我的C++/C++ 11代码中),其中我的类型基本上像内置类型(或类似的"基本简单"类型std::string),但其含义超过32位号或一堆字符.我没有在互联网上找到任何有用的东西,因为我真的没有什么条件可以搜索...
例子:
std::strings(首先可能不是最好的主意,但这是一个不同的故事).但真正糟糕的是,这些ID以std::strings或const char*s的形式通过系统传递.因此,在搜索类型时,很难(不可能)判断代码库ID中的位置.变量名称是ID(ID,id,Id)或密钥的全部变体,或者只是i或名称或其他.所以你也不能按名字搜索.所以我更愿意将这些变量作为类型传递id_t.uint16_ts.但我想把它们作为network_port_ts 传递给我们.我通常使用typedef使事情变得更好.这种方法有许多问题:
std::string而不是id_t).我尝试使用网络端口示例的另一件事是编写一个瘦的包装类运动operator uint16_t.这解决了前向声明的问题.但后来我遇到了一些陷阱,其中包含一些内部使用printf的日志记录宏.printfs仍然工作(好,编译),但没有打印端口号,但(我认为)对象的地址.
我认为尺寸像重量或长度Boost.Units可能值得一看(即使它看起来有点"沉重").但是对于上面的两个例子,它并不合适.
实现我想要的最佳实践是什么(使用Boost是一种选择)?
简而言之: 我想要实现的是将"具有更高意义的类型"作为自己的类型而不是普通的原始/低级/非抽象类型.(有点像)具有用户定义的类型.优选地,没有为具有基本相同的实现的每种类型编写完整类的巨大开销,仅仅能够执行已经可以执行的内置操作.
我正在尝试使用 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。