APIB - 无论请求有效负载如何,始终响应POST请求。

时间:2016-07-08 19:36:02

标签: mocking api-design apiblueprint

我正在尝试使用Api Blueprint和Drakov的组合来模拟API。但是,对于一个特定端点,我事先不知道请求有效负载是什么。请参阅以下代码。

# Group Stuff

Description about stuff.

## Main Stuff Resource [stuff/{userId}/response/{responseId}]

+ Parameters
    + userId: specialUser (string, required) - ID of user
    + responseId: 0f9d78ee-005056ad6f10 (string, required) - ID for a particular response.

### Submit Survey Form [POST]

+ Attributes
    + attribute1 (array[object]) - Description for attribute 1
    + attribute2 (array[object]) - Description for attribute 1

+ Request (application/json)
    {attribute1:[],attribute2[]}

+ Response 201  (text/plain; charset=utf8)
    + Headers
        X-XSS-Protection: 0
        Vary:Origin,Accept-Encoding
        Access-Control-Allow-Credentials:true
    + Body
        http://fakeurl.com

上述代码有效,但仅当请求有效负载完全 {attribute1:[],attribute2:[]}时才有效。即使是不同的whitespacing似乎也会提示,向用户返回404并从Drakov返回错误日志:[WARNING] JSON body could not be parsed. Using body as is.

我已尝试删除Attributes部分,移除Request部分,从Request部分删除JSON示例,删除除Response部分以外的所有内容,以及使用Schema部分。这些似乎都不起作用,我在API蓝图文档中找不到任何提及。

如果我不知道请求有效负载的格式或attribute1attribute2的内容,我怎么能始终将该响应返回到该端点的POST请求会是吗?

1 个答案:

答案 0 :(得分:1)

嘿@LanceLafontaine我是Drakov的维护者之一。

您是否尝试将请求更改为{ "attribute1": [], "attribute2": [] }(在Blueprint API规范文件中)

随时在Drakov回购http://github.com/Aconex/drakov/issues

上发布一个问题

我查看解析代码已经有一段时间了,但我认为Drakov不会解析Attribute部分,它会尝试匹配Request部分根据你发布的内容。