2015-09-18 6 views
0

Я использую редактор swagger для документирования существующего API, который допускает путь для поддержки двух разных запросов, которые отличаются только их именами параметров запроса. Например:Пути, которые отличаются только именами параметров запроса

swagger: '2.0' 
info: 
    title: example 
    version: 1.0.0 
host: example.com 
schemes: 
    - http 
basePath: /WS 
paths: 
    /Login: 
    post: 
     summary: Login 
     description: | 
     Log in 
     parameters: 
     - name: UserID 
      in: query 
      description: User ID 
      required: true 
      type: string 
     - name: Password 
      in: query 
      description: User password 
      required: true 
      type: string 
     responses: 
     '200': 
      description: Success 
    /Login: 
    post: 
     summary: Login 
     description: | 
     Log in 
     parameters: 
     - name: UserID 
      in: query 
      description: User ID 
      required: true 
      type: string 
     - name: Token 
      in: query 
      description: Authentication token 
      required: true 
      type: string 
     responses: 
     '200': 
      description: Success 

Здесь я поддерживаю запросы http://example.com/WS/Login?UserID=foo&Passoword=bar и http://example.com/WS/Login?UserID=foo&Token=dubdu22r8dwjgd767dg.

Редактор swagger не показывает никаких ошибок для вышеупомянутого yaml, но только создает документацию для второго пути (тот, который имеет параметры запроса UserId и Token), а не оба. Может кто-то указать, где я иду не так? Благодарю.

Edit:

Если изменить второй /Login: путь к (например) /Login1: тогда я вижу оба пути в документации. Не решение.

Это также происходит со мной, что я мог бы указать один /Login: путь с требуемым UserID параметром и факультативных Password и Token параметров. Но как я могу указать, что должен быть указан ровно одинUserID и Password?

+0

, связанные (или дубликат): [Как определить взаимоисключающие параметры запроса в Swagger (OpenAPI)?] (Https://stackoverflow.com/questions/21134029/how-to-define-between-exclusive-query-parameters-in-swagger-openapi) – Helen

ответ

1

Вы можете использовать параметры пути вместо этого, попробуйте:

swagger: '2.0' 
info: 
    title: example 
    version: 1.0.0 
host: example.com 
schemes: 
    - http 
basePath: /WS 
paths: 
    /Login?UserID={id}&Password={password}: 
    post: 
     summary: Login 
     description: Log in 
     parameters: 
     - name: id 
      in: path 
      description: User ID 
      required: true 
      type: string 
     - name: password 
      in: path 
      description: User password 
      required: true 
      type: string 
     responses: 
     '200': 
      description: Success 
    /Login?UserID={id}&Token={token}: 
    post: 
     summary: Login 
     description: Log in 
     parameters: 
     - name: id 
      in: path 
      description: User ID 
      required: true 
      type: string 
     - name: token 
      in: path 
      description: Authentication token 
      required: true 
      type: string 
     responses: 
     '200': 
      description: Success 
+0

Да, в этом была проблема: я не включил queryparams в пути. Не могу поверить, что я пропустил это! Спасибо за вашу помощь! –

+0

Это не действительная спецификация Swagger 2.0. Параметры запроса в путях запрещены. – Helen

Смежные вопросы