Попытка описать запрос и ответ с использованием структур данных в API Blueprint
Я пытаюсь задокументировать конечную точку с помощью API Blueprint, используя новые разделы Attributes и DataStructures спецификации.
Полезная нагрузка моего запроса выглядит следующим образом:
{
"url": "http://requestb.in/11v7i7e1",
"active": true,
"types": [
{
"name": "sales",
"version": "2.0"
},
{
"name": "products",
"version": "2.0"
}
]
}
Полезная нагрузка моего ответа выглядит примерно так:
{
"data": {
"id": "dc85058a-a683-11e4-ef46-e9431a15be8c",
"url": "http://requestb.in/11v7i7e1",
"active": true,
"types": [
{
"name": "products",
"version": "2.0"
},
{
"name": "sales",
"version": "2.0"
}
]
}
}
Я попробовал следующую разметку API Blueprint:
FORMAT: 1A
# Vend REST API 2.0
# Group Webhooks
## api/2.0/webhooks [/webhooks]
### List all Webhooks [GET]
Returns a list of Webhooks created by the authorised application.
+ Response 200 (application/json)
+ Attributes (Webhook Collection)
### Add a new Webhook [POST]
Creates a new Webhook.
+ Attributes (Webhook Base)
+ Request (application/json)
+ Attributes (Webhook Base)
+ Response 200 (application/json)
+ Attributes (Webhook Response)
# Data Structures
## Webhook Base (object)
+ url: https://example.com/webhook (string, required) - The address where webhooks requests should be submitted.
+ active: true (boolean, required) - This field can be used to inspect or edit state of the webhook.
+ types: array[Webhook Type] (array[Webhook Type], required) - Collection of Webhook types which should trigger Webhook event.
## Webhook Response Base (Webhook Base)
+ id: dc85058a-a683-11e4-ef46-e8b98f1a7ae4 (string, required) - Webhook `id`.
## Webhook Response (object)
+ data: webhook (Webhook Response Base, required)
## Webhook Type (object)
+ name: sales (string, required) - One of: products, sales, customers, taxes
+ version: 2.0 (string, required) - Version of the payload to be delivered. Currently the only supported value is "2.0".
## Webhook Collection (object)
+ data: array[Webhook Response Base] (array[Webhook Response Base], required) - An array of Webhook objects.
Теперь, когда я смотрю на него в Apiary, он говорит мне, что это действительный документ API Blueprint, но это не так, как я JSON просматривает для запроса и ответа. Можно ли даже представить структуры, подобные этой, в API Blueprint и хорошо визуализировать в Apiary?
1 ответ
Это сочетание двух проблем:
- неверный синтаксис
- ошибка в рендеринге
1. Синтаксис
Проблема, кажется, здесь:
## Webhook Collection (object)
+ data: array[Webhook Response Base] (array[Webhook Response Base], required) - An array of Webhook objects.
Смотря на + data: array[Webhook Response Base] (array[Webhook Response Base])
, В основном, когда значение ожидается (после :
) значение должно быть предоставлено. Вместо этого - в этом случае - у вас есть тип array[Webhook Response Base]
,
Позвольте мне продемонстрировать на более простом примере:
+ data: number (array[number])
неверно
Правильная версия будет
+ data: 42 (array[number])
или же
+ data (array[number])
+ 42
или же
+ data (array)
+ 42 (number)
2. Ошибка в рендеринге
Даже если вы исправите план, он не будет отображен в Apairy. Это ошибка, которую мы обнаружили в нашем JSON-рендерере. Об этом здесь было сообщено https://github.com/apiaryio/drafter.js/issues/26 мы планируем исправить это как можно скорее.
Это было исправлено сейчас
Исправленный план
FORMAT: 1A
# Vend REST API 2.0
# Group Webhooks
## api/2.0/webhooks [/webhooks]
### List all Webhooks [GET]
Returns a list of Webhooks created by the authorised application.
+ Response 200 (application/json)
+ Attributes (Webhook Collection)
### Add a new Webhook [POST]
Creates a new Webhook.
+ Attributes (Webhook Base)
+ Request (application/json)
+ Attributes (Webhook Base)
+ Response 200 (application/json)
+ Attributes (Webhook Response)
# Data Structures
## Webhook Base (object)
+ url: https://example.com/webhook (string, required) - The address where webhooks requests should be submitted.
+ active: true (boolean, required) - This field can be used to inspect or edit state of the webhook.
+ types (array[Webhook Type], required) - Collection of Webhook types which should trigger Webhook event.
## Webhook Response Base (Webhook Base)
+ id: dc85058a-a683-11e4-ef46-e8b98f1a7ae4 (string, required) - Webhook `id`.
## Webhook Response (object)
+ data (Webhook Response Base, required)
## Webhook Type (object)
+ name: sales (string, required) - One of: products, sales, customers, taxes
+ version: 2.0 (string, required) - Version of the payload to be delivered. Currently the only supported value is "2.0".
## Webhook Collection (object)
+ data (array[Webhook Response Base], required) - An array of Webhook objects.
Надеюсь, что это ответ на ваш вопрос. Пожалуйста, дайте мне знать, если необходимы дальнейшие разъяснения.