GOOGLE ADS

viernes, 29 de abril de 2022

¿Cómo valido una carga JSON en OpenAPI 3.0 con Mule 4.4 Runtime?

Necesito desarrollar una API Mule (4.4 Runtime) con openapi: 3.0.0 El punto final es un POST con la siguiente carga de solicitud:

{
"Employee": {
"Address": {
"City": "a",
"Country": "aaa"
}
}
}

Aquí está la sección relevante de la especificación OpenAPI 3.0:

 openapi: "3.0.0"
paths:
/search:
post:
tags:
- SearchUser
summary: Search for Users
operationId: getUser
requestBody:
description: User Request Object
content:
application/json:
schema:
$ref: '#/components/schemas/RequestComp'
required: true
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ResponseComp'
'400':
description: Bad request
content: {}
'404':
description: User not found
content: {}
'405':
description: Validation exception
content: {}

components:
schemas:
RequestComp:
type: object
properties:
Employee:
$ref: '#/components/schemas/EmployeeComp'
EmployeeComp:
type: object
properties:
Address:
$ref: '#/components/schemas/AddressComp'
AddressComp:
type: object
properties:
City:
type: string
required: true
nullable: false
minLength: 1
Country:
type: string
required: true
nullable: false
minLength: 1
ResponseComp:
type: object
properties:
City:
type: string
Country:
type: string

Entonces, puedo validar elementos individuales como 'Ciudad' y 'País' para que no sean nulos, pero ¿cómo evito seguir la solicitud? (actualmente no está marcado como no válido:)

 {
"Address": {
"City": "a",
"Country": "aaa"
}
}


Solución del problema

Puede definir el Employeecontenedor como una propiedad requerida y también rechazar propiedades desconocidas agregando additionalProperties: false. Tenga en cuenta que no requiredes un atributo de nivel de propiedad, sino un atributo de nivel de objeto: es una lista de propiedades requeridas.

components:
schemas:
RequestComp:
type: object
required: [Employee] # <-----
properties:
Employee:
$ref: '#/components/schemas/EmployeeComp'
additionalProperties: false # <-----
EmployeeComp:
type: object
properties:
Address:
$ref: '#/components/schemas/AddressComp'
additionalProperties: false # <-----
AddressComp:
type: object
required: [City, Country] # <-----
properties:
City:
type: string
# required: true # <-- remove this
nullable: false
minLength: 1
Country:
type: string
# required: true # <-- remove this
nullable: false
minLength: 1
additionalProperties: false # <-----

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...