Сделайте некоторые параметры запроса зависимыми в RAML
Я пишу спецификации API с RAML. У меня есть GET API с тремя параметрами запроса. Один из них не является обязательным. В случае двух других, один из них должен присутствовать как минимум. Как мне определить это в спецификации API
/api
description: api end point
queryParameters:
field1:
description: field1
required: false
type: string
field2:
description: field2
required: false
type: string
field3:
description: field3
required: false
type: string
Здесь field1 совершенно необязательно. Это нормально, если у нас его нет. Но из двух других, либо field2, либо field3 должны присутствовать.
Так что вызов API должен быть
/api?field2=value or /api?field3=value
Как мне сделать это в raml?
2 ответа
Вы можете разделить параметры запроса на два типа (по одному для каждой комбинации) и использовать тип объединения:
types:
oneParam:
properties:
field1:
description: field1
required: false
type: string
field3:
description: field3
type: string
otherParam:
properties:
field1:
description: field1
required: false
type: string
field2:
description: field2
type: string
/api:
description: api end point
get:
queryParameters:
type: oneParam | otherParam
Если вы хотите принудительно вернуть неверный запрос в случае, если параметр не передан, вы можете попробовать использоватьminProperties
:
{types:
oneParam:
**minProperties: 1**
properties:
field1:
description: field1
required: false
type: string
field3:
description: field3
type: string
otherParam:
**minProperties: 1**
properties:
field1:
description: field1
required: false
type: string
field2:
description: field2
type: string
/api:
description: api end point
get:
queryParameters:
type: oneParam | otherParam
}