用于发送命令的Wolkenkit REST API返回“格式错误的命令”

时间:2017-08-31 08:18:52

标签: rest wolkenkit

我正在尝试使用Wolkenkit的REST API发送命令。我没有在文档中找到任何信息,所以我试图通过源代码和单元测试找到必要的信息。

我正在使用HTTPie来执行来自cli的请求:

> http --verbose post https://local.wolkenkit.io:3500/v1/command id=12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000 context:='{"name": "mycontext"}' aggregate:='{"name": "label", "id": "26c01e1f-abb8-42fa-82cf-60ca4a6bfbfa"}' name=create data:='{"label": "third"}' custom:='{}' metadata:='{"timestamp": "1504167240279", "correlationId": "12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000", "causationId": "12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000"}'

POST /v1/command HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 405
Content-Type: application/json
Host: local.wolkenkit.io:3500
User-Agent: HTTPie/0.9.9

{
    "aggregate": {
        "id": "26c01e1f-abb8-42fa-82cf-60ca4a6bfbfa",
        "name": "label"
    },
    "context": {
        "name": "mycontext"
    },
    "custom": {},
    "data": {
        "label": "third"
    },
    "id": "12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000",
    "metadata": {
        "causationId": "12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000",
        "correlationId": "12bf5b37-e0b8-42e0-8dcf-dc8c4aefc000",
        "timestamp": "1504167240279"
    },
    "name": "create"
}

HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate
Connection: keep-alive
Content-Length: 18
Content-Type: text/html; charset=utf-8
Date: Wed, 30 Aug 2017 20:57:27 GMT
ETag: W/"12-2BIyYXjsDfNWq9+GqVAfSCeA8D4"
Expires: 0
Pragma: no-cache
Surrogate-Control: no-store
X-FRAME-OPTIONS: DENY
X-Powered-By: Express
X-XSS-Protection: 1; mode=block

Malformed command.

我使用wolkenkit console来验证aggregate.id是否正确。 command.id只是一个随机uuid()

Malformed command作为回复我做错了什么?

1 个答案:

答案 0 :(得分:2)

免责声明:我是wolkenkit的开发人员之一。

在内部,命令是使用commands-events模块构建的,该模块也用于验证传入的命令。

实际错误来自tailwind,wolkenkit使用它作为使用命令和事件的应用程序的基础。在内部,此commands-events代码calls the isWellformed function,而checks the schema依次为{{3}}。

从我看到的一切似乎都很好,除了metadata.timestamp应该是number,而不是string。我想如果你改变这个,那么wolkenkit会愉快地接受你的命令。