Проверка параметров запроса в RAML

Мне нужно создать API с четырьмя возможными параметрами HTTP-запроса. Требуется либо параметр один, либо параметр два. Остальные не обязательны. В официальной спецификации RAML версии 1.0 на Github я нашел почти точный сценарий в примере RAML queryString.

Я загрузил его в Центр дизайна Mulesoft, чтобы проверить. RAML не выдает ошибок в Design Center, и все выглядит нормально. Согласно первому примеру RAML, следующий URL должен дать успешный результат (200 OK):

GET https://(mocking URL)/locations?start=2&lat=12&long=13

Когда я отправляю его через Postman, он попадает в службу издевательств, но я получаю следующую ошибку:

{
    "code": "REQUEST_VALIDATION_ERROR",
    "message": "Error validating query string: expected type: JSONObject, found: Null"
} 

Я не уверен, что это ограничение Центра дизайна или в моем URL-адресе что-то не так. Кто-нибудь знает, что я делаю не так?

Вот образец RAML из официальной спецификации:

#%RAML 1.0
title: Illustrate query parameter variations
types:
  lat-long: # lat & long required; mutually exclusive with location
    properties:
     lat: number
      long: number
  loc: # location required; mutually exclusive with lat & long
    properties:
      location:
  paging: # each is optional, not exclusive with anything
    properties:
      start?: number
      page-size?: number
/locations:
  get:
    queryString:
      type: [paging,  lat-long | loc ]
      examples:
        first:
          value:
            start: 2
            lat: 12
            long: 13
        second:
          value:
            start: 2
            page-size: 20
            location: 1,2
        third:  # not valid
          value:
            lat: 12
            location: 2
          strict: false # because it's not valid

2 ответа

Спецификация RAML явно не определяет валидацию для типов объектов:

RAML не определяет проверку, когда в объявлении параметра запроса указывается любой из следующих типов для значения параметра запроса: тип объекта, объединение нескалярных типов или тип массива, если базовый тип массива является объектом. тип или объединение нескалярных типов. Процессоры МОГУТ по умолчанию обрабатывать формат значения параметра запроса как JSON при применении типа к экземплярам этого параметра запроса, или они МОГУТ разрешить другие процедуры на основе аннотаций.

Даже если Mocking Service в конечном итоге реализует проверку, может быть лучше использовать простые типы для параметров запроса, такие как строки и числа. Это имеет смысл, потому что обычно именно так используются параметры запроса.

Это похоже на ошибку в инструменте имитации MuleSoft Anypoit. Спецификация RAML верна. Вы можете сообщить о дефекте в службе поддержки MuleSoft.

Другие вопросы по тегам