尝试使用API​​蓝图中的数据结构描述请求和响应

时间:2015-04-22 23:31:35

标签: api apiblueprint apiary.io apiary mson

我尝试使用规范的新属性和数据结构部分使用API​​蓝图记录端点。

我的请求有效负载如下所示:

{
    "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蓝图降价:

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蓝图中表示并且能够在Apiary中很好地呈现?

1 个答案:

答案 0 :(得分:20)

这是两个问题的组合:

  1. 语法不正确
  2. 渲染中的错误
  3. 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.
    

    希望这能回答你的问题。如果需要进一步澄清,请告诉我。