如何使用与卷曲PATCH动词(How to use PATCH verb with curl)

2019-09-01 12:57发布

我想打个补丁呼叫服务器。 我使用下面的命令:

curl --data status=closed -X PATCH https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515 

这是发送PATCH请求的正确方法是什么? 我收到一个错误说没有状态的参数集。 我猜的--data是POST请求只,因此服务器没有找到状态参数。

这是响应(FYI):

{"http_status":400,"error":"Parameter validation errors","validation_errors":{"status":{"error":"Request missing status parameter."}}}

你可以找到有关该服务的文档在这里 。

Answer 1:

这是你应该使用以下格式:

curl --request PATCH https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515?status=closed

使用-X似乎并不在发送PATCH请求方面的工作-你必须使用--request PATCH 。 此外,该API似乎想将status参数上的URL,补丁身体不属于查询参数。

此时服务器将返回一个401错误:“您必须先登录才能修改页面设置” Assumedly你必须有这样的初次登录:

curl --request POST "https://api.viafoura.com/v2/dev.viafoura.com/users/login?password=TeNn!sNum8er1&email=novak@example.com"

我使用的凭据从他们在例如文档,我想他们的开发服务器上的工作,但目前它返回一个“密码不正确”的错误。

如果您拥有有效的凭据,但是,你应该得到一个会话cookie,然后您可以用它来验证您的PATCH请求。



Answer 2:

我试图补丁,具有类似卷曲请求tastypie资源。 对我来说,问题是数据必须通过在像这样:

curl --data '{"field": "new_value"}' -X PATCH http://127.0.0.1:8000/api/v1/resource_uri/pk/

请注意如何我传递给数据标志是什么样子作为字符串传递,而不是直接把帕拉姆作为问题的字典里。 当然,设置了一个param也工作作为已经回答了,但希望这可以帮助一些人。



Answer 3:

你的命令行应该工作。 正如你可以在PATCH见RFC5789 ,在HTTP请求类似于什么卷曲发(使用--trace-ascii的去看到完整的卷曲通信)。 你可能想(使用改变的Content-Type --header )。

所提到的失踪状态参数所指的可能是在请求体内容。 您的“状态=关闭”的数据可能是不正确的格式(JSON?),或者是不完整的。

(你似乎意在包括一个链接到API,但没有链接那里!)



Answer 4:

这东西这在我的示例应用程序为我工作。

curl --data 'id=57&equipment_type_name=57 edited' -X PATCH http://localhost:5009/equipment-type/update

{ "info": "Equipment type updation.", "response": { "status": "success", "message": "updateEquipmentType", "result": { "data": [ [ { "update_status": 1 } ], { "fieldCount": 0, "affectedRows": 0, "insertId": 0, "serverStatus": 2, "warningCount": 0, "message": "", "protocol41": true, "changedRows": 0 } ] } } }



Answer 5:

另一种方法是如下,这是通过POST调用虽然

curl --data status=closed https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515?verb=PATCH 

我猜测这是不是一个普遍的方式,仅适用于这个特定的实例。



文章来源: How to use PATCH verb with curl
标签: curl patch