我正在尝试正确定义 OpenAPI 规范,以便从该规范生成 api 客户端。我已经解决了一个问题,即我们有一个复杂的查询对象,其中包含嵌套对象和对象数组,用于获取 GET 路由。
让我们以这些类为例。
class Person {
@ApiProperty()
name!: string
@ApiProperty()
location!: string
}
class CompanyDto {
@ApiProperty()
name!: string
@ApiProperty({
type: [Person],
})
employees!: Person[]
}
和一个带有@Query decorator的get请求。
@Get('test')
async testing(@Query() dto: CompanyDto): Promise<void> {
// ...
}
我得到的是。
{
get: {
operationId: 'testing',
parameters: [
{
name: 'name',
required: true,
in: 'query',
schema: {
type: 'string',
},
},
{
name: 'name',
in: 'query',
required: true,
schema: {
type: 'string',
},
},
{
name: 'location',
in: 'query',
required: true,
schema: {
type: 'string',
},
},
],
responses: {
'200': {
description: '',
},
},
tags: ['booking'],
},
}
我还尝试通过添加@ApiQuery装饰器来定义查询参数,它几乎可以工作。
@ApiQuery({
style: 'deepObject',
type: CompanyDto,
})
-
{
get: {
operationId: 'testing',
parameters: [
{
name: 'name',
required: true,
in: 'query',
schema: {
type: 'string',
},
},
{
name: 'name',
in: 'query',
required: true,
schema: {
type: 'string',
},
},
{
name: 'location',
in: 'query',
required: true,
schema: {
type: 'string',
},
},
{
name: 'name',
in: 'query',
required: true,
schema: {
type: 'string',
},
},
{
name: 'employees',
in: 'query',
required: true,
schema: {
type: 'array',
items: {
$ref: '#/components/schemas/Person',
},
},
},
],
responses: {
'200': {
description: '',
},
},
tags: ['booking'],
},
}
但是现在我正在将重复的查询定义混入一个。有没有办法防止或覆盖@Query定义?或者只是定义复杂@Query的更好方法?
最终创建了一个自定义的装饰器来提取查询,而没有生成OpenAPI规范。
export const SilentQuery = createParamDecorator(
(data: string | undefined, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest()
if (data) {
return request.query[data]
} else {
return request.query
}
},
)
所以现在可以使用带有deepObject样式的@ApiQuery了。
例如,如果您将ValidationPipes与类验证器一起使用。确保将validateCustomDecorator设置为true
@SilentQuery(new ValidationPipe({ validateCustomDecorators: true }))
在关于参数序列化的OpenAPI文档中,有一个简短的部分是关于如何序列化具有不同样式的查询、路径、标头和cookie参数。这些参数的模式被描述为OpenAPI风格的json模式,它允许对象和数组的无限嵌套。我在文档中没有找到任何关于如何处理这些的内容: https://swagger.io/docs/specification/serialization/ 让我们假设为任何参数提供的JSON模式如
我正在用Swagger 2.0记录一个Rails应用程序,并使用Swagger-UI作为人类可读的文档/沙盒解决方案。 我有一个资源,客户端可以在其中存储任意元数据以供以后查询。根据 Rails 约定,查询将按如下方式提交: Rails将其转换为以下参数: 它可以很容易地用于为数据库生成适当的 子句。 Swagger里有支持这种东西的吗?我想最终让Swagger-UI提供一些方法来修改生成的请求,
我们的API有这样的endpoint,通过合并这两组参数,同时支持来自< code>query和< code>body的参数。 例如: 生成的参数集将包含两个,和。 此endpoint可以用作: 或 有没有办法在Swagger中指定这种“双重性”? UPD 我想我应该将参数定义为:和
问题内容: 我对mongodb还是很陌生,有一件事我现在无法解决: 假设您有以下文档(简体): 哪个查询将返回json-object,其值等于“ value2”? 这意味着,我需要这个json-object: 当然,我已经尝试了很多可能的查询,但是没有一个返回正确的查询,例如 有人可以帮我看看我在做什么错吗? 谢谢! 问题答案: 使用位置运算符 输出量 使用聚合 输出 使用Java驱动程序 输出
让我们考虑一下这些帖子的集合。每个帖子都有一个评论数组,每个评论都有一个字符串数组,带有键“likes”,表示喜欢该评论的用户。 如何使用mongoose检查用户是否喜欢具有给定ID的评论?