Как повторно использовать объекты в схеме API BluePrint?

Я создал API, который доставляет ресурс с именем "Миниатюра" (/ миниатюры)

{
    "name": "toto",
    "uri": "http://xxx"
}

С другой стороны, у меня есть несколько ресурсов, которые включают в себя ресурс Thumbnail (например, / article, /videos ...):

{
    "name": "playlist",
    "thumbnail": 
    {
        "name": "toto",
        "uri": "http://xxx"
    }
}

Когда я пишу схемы этих веб-сервисов в уценке BluePrint, я хотел бы иметь возможность повторно использовать схему, которую я создал для схемы Thumbnail, чтобы не повторять код в схемах. У меня есть черта черты характера ( https://github.com/apiaryio/api-blueprint/issues/47), но я не знаю, будет ли она соответствовать моим потребностям и будет ли она работать с aglio и dredd.

Вы знаете, что лучше всего делать в моем случае?

3 ответа

Вы можете использовать MSON в разделе Атрибуты API Blueprint для определения многократно используемых объектов.

Вы можете увидеть некоторые примеры здесь, здесь и здесь.

Я приведу вам пример:

Мой мд:

# Data Structures

## Video (object)
Definition of a video
    + id: 11111 (number, required) - The unique key
    + description: "my video" (string, required) - Free text of video
    + truc: "ffff" (string, required)

## A video [/videos/{id}]
See a video

+ Parameters

    + id (required, string, `a-la-decouverte-des-metiers-projection-du-film`) ... L'id ou le slug de la video

### Select a video [GET]

+ Response 200 (application/json)

    + Attributes (Video)

И мой API:

{
"id": "1111",
"description": "description of the video",
"uri": "http://"
}

Тест в порядке, но я хочу ошибку от dredd!!!

Поэтому я обновил свой dredd и протестировал MSON. Это круто и эффективно. У меня просто проблема с этим MD:

# Data Structures

## Video (object)
Definition of a video
+ id: 11111 (number) - The unique key
+ description: "my video" (string) - Free text of video
+ truc: "ffff" (string)

# Group VideosTest

## Videos List [/videos]
List of videos

### List of videos [GET]

+ Response 200 (application/json)

    + Attributes (array[Video])

Тест не проходит, но у меня нет атрибутов "truc" в моем реальном API, и у меня есть атрибут URL. Поэтому я ожидал, что тест провалится. Я ошибся?

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