如何使用卷曲的PATCH动词

she*_*aei 54 curl patch

我正在尝试对服务器进行PATCH调用.我使用以下命令:

curl --data status=closed -X PATCH https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515 
Run Code Online (Sandbox Code Playgroud)

这是发送PATCH请求的正确方法吗?我收到错误,说没有状态参数设置.我猜--data仅用于POST请求,因此服务器找不到status参数.

这是回复(FYI):

{"http_status":400,"error":"Parameter validation errors","validation_errors":{"status":{"error":"Request missing status parameter."}}}
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到有关此服务的文档.

Jam*_*ess 80

这是您应该使用的格式:

curl --request PATCH https://api.viafoura.com/v2/dev.viafoura.com/pages/7000000043515?status=closed
Run Code Online (Sandbox Code Playgroud)

使用status似乎不起作用发送PATCH请求 - 您必须使用status.此外,该API似乎希望该status参数作为URL上的查询参数,而不是PATCH主体的一部分.

此时,服务器将返回401错误:"您必须登录才能修改页面设置." 假设您必须先使用以下内容登录:

curl --request POST "https://api.viafoura.com/v2/dev.viafoura.com/users/login?password=TeNn!sNum8er1&email=novak@example.com"
Run Code Online (Sandbox Code Playgroud)

我在这个例子中使用了他们文档中的凭据,我认为这些凭据可以在他们的dev服务器上运行,但是它当前返回了"密码错误"错误.

但是,如果您拥有有效的凭据,则应该返回一个会话cookie,然后您可以使用该cookie来验证您的PATCH请求.

  • 奇怪的是,`-X`和`--request`被记录为相同的标志. (7认同)
  • -X的工作方式如记录在案:`curl -u test:testtest -k -X PATCH https:// api.test`这里没有问题。 (3认同)

Nic*_*ady 7

我试图使用类似的curl请求修补到tastypie资源.对我来说问题是数据必须像这样传递:

curl --data '{"field": "new_value"}' -X PATCH http://127.0.0.1:8000/api/v1/resource_uri/pk/
Run Code Online (Sandbox Code Playgroud)

注意我传递给数据标志的内容是什么看起来像是作为字符串传递的字典,而不是直接将param放在问题中.当然,一个参数也可以解决,但希望这有助于一些人.

  • 有时,如果 --data 中的正文是 json,则需要传递 json 标头: `--data '{"name": "new name"}' -H "content-type: application/json"` ! (2认同)

d_f*_*d_f 5

对于那些在 Windows 上运行它的人来说,它具有patch多个属性的复杂表达式。
以下对我有用:

curl -X PATCH "http://localhost:5001/tenants/test02" -H "Content-Type: application/json" -d [{"""op""":"""replace""","""value""":"""100""","""path""":"""/employmentEndSettings/daysLoginActive"""},{"""op""":"""replace""","""value""":"""retiree""","""path""":"""/employmentEndSettings/userRoleAfter"""}]
Run Code Online (Sandbox Code Playgroud)