Wolkenkit REST API 用于发送命令 returns "Malformed command"
Wolkenkit REST API for sending commands returns "Malformed command"
我正在尝试使用 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
作为响应有什么错?
免责声明:我是 wolkenkit 的开发者之一。
在内部,命令是使用 commands-events 模块构建的,该模块也用于验证传入的命令。
实际错误来自命令的tailwind which wolkenkit uses under the hood as base for an application that uses commands and events. Internally, this code calls the isWellformed
function of commands-events
, which in turn checks the schema。
据我所知,一切似乎都很好,除了 metadata.timestamp
应该是 number
,而不是 string
。我想如果你改变这个,那么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
作为响应有什么错?
免责声明:我是 wolkenkit 的开发者之一。
在内部,命令是使用 commands-events 模块构建的,该模块也用于验证传入的命令。
实际错误来自命令的tailwind which wolkenkit uses under the hood as base for an application that uses commands and events. Internally, this code calls the isWellformed
function of commands-events
, which in turn checks the schema。
据我所知,一切似乎都很好,除了 metadata.timestamp
应该是 number
,而不是 string
。我想如果你改变这个,那么wolkenkit会很高兴地接受你的命令。