【发布时间】:2020-06-05 12:34:57
【问题描述】:
我的目标是使用 API 在 Zammad 中创建票证,然后对其进行更新(用于。
此类基本任务的参考是here
我正在使用 Postman 发送请求。
我使用不记名令牌身份验证,令牌已为ticket.agent(他也是管理员)的用户生成。
我成功地通过发布请求来创建票证
https://myzammadinstance.com/api/v1/tickets
和这个身体:
{
"title": "Ticket generated from API - my test",
"group": "Users",
"article": {
"subject": "My Subject",
"body": "My body",
"type": "note",
"internal": false
},
"customer": "my@email.address",
"user": "my@email.address",
"note": "my notes"
}
这成功创建了一张票(具有给定 ID,比如 1990)。
现在我想更新这张票,所以“从 API 回复”。
我发帖请求
https://myzammadinstance.com/api/v1/tickets
和这个身体:
{
"id": 1990,
"title": "updated title",
"group": "Users",
"state": "open",
"customer_id": 12,
"priority": "3 high",
"article": {
"subject": "some subject of update",
"body": "some message of update"
}
}
这会执行,但不会对我的票 1990 附加回复,但会生成一个新票(id 为 1991,标题为“更新的标题”)。
我不想创建新工单,只想回复现有工单。
我可能误解了什么,但我多次检查了文档和请求正文。
有人可以帮忙吗?
更新:如 cmets 所述,我似乎应该使用 https://myzammadinstance.com/api/v1/tickets/1990
但这不起作用:未创建新票但响应有错误:
{
"error": "No route matches [POST] /api/v1/tickets/1990"
}
解决方案
问题在于PUT 与POST,通过使用PUT 和此端点
https://myzammadinstance.com/api/v1/tickets/1990
我设法回复了票。
【问题讨论】:
-
您不会使用此端点更新票证
PUT /api/v1/tickets/{id}- docs.zammad.org/en/latest/api/ticket.html#update -
感谢您的回复。我可能不够专业,我应该如何解释
{id}?我尝试使用PUT /api/v1/tickets/1990,但它回复“没有路由匹配 [POST] /api/v1/tickets/1990”。此外,为什么我应该在端点和正文中都使用 id?谢谢! -
我在问题中附加了一个 UPDATE 部分
-
您是否将方法更改为
PUT- 不知道为什么它会返回带有POST的消息。我不拥有或曾经使用过此 API,我只是阅读了您附加的文档:D -
是的,我再次阅读文档得出了相同的结论。
PUT是解决方案。谢谢!
标签: rest postman ticket-system