Как динамически включать / исключать блок API в выводе RAML - PullRequest
0 голосов
/ 27 февраля 2020

Мне просто любопытно понять, какие возможности исключают / включают конечные точки в документацию, сгенерированную из RAML.

Например, учитывая

#%RAML 1.0
baseUri: https://api.mybanks.com/v1
title: MyBanks-API
version: v1
protocols: [HTTP, HTTPS]
mediaType: application/json

/banks:
  get:
    description: Lists all banks
    responses:
      200:
        body:
          text/plain:
            example: ['b1', 'b2']
/accounts:
  get:
    description: List all accounds
    responses:
      200:
        body:
          text/plain:
            example: ['a1', 'a2', 'a3']

I хотите исключить /banks API из сгенерированной документации. Каковы возможные способы сделать это? (желательно без комментариев)

1 Ответ

0 голосов
/ 08 марта 2020

Нет способа (AFAIK) динамически исключать фрагменты вашего API spe c - более того, какова будет семантика такой функции? то есть в чем смысл? Другое соображение, как это применимо, когда вы берете spe c и начинаете его реализовывать?

Теперь есть способ расширить существующую API-спецификацию c с помощью RAML extension. https://github.com/raml-org/raml-spec/blob/master/versions/raml-10/raml-10.md/#extensions

Если вы используете фрагмент RAML extension, Spe c будет разделен на два файла:

1) Файл root RAML :

#%RAML 1.0
baseUri: https://api.mybanks.com/v1
title: MyBanks-API
version: v1
protocols: [HTTP, HTTPS]
mediaType: application/json

/accounts:
  get:
    description: List all accounds
    responses:
      200:
        body:
          text/plain:
            example: ['a1', 'a2', 'a3']

2) Фрагмент extension:

#%RAML 1.0 Extension
extends: banks-api.raml

/banks:
  get:
    description: Lists all banks
    responses:
      200:
        body:
          text/plain:
            example: ['b1', 'b2']

Теперь у вас есть два представления вашего API: (1) root и (2) extension. Вы можете предоставить root или extention своим пользователям.

...