如何使用httr在R中执行PUT或PATCH请求

问题描述 投票:2回答:1

因此,我已经看到了一些有关使用httr进行GET和POST请求的帖子,但是我试图找出如何更新公司数据库中的值,并且试图找出如何使用这些功能。特别是,我在如何格式化body参数方面很费劲。例如,浏览我的数据库:

library("httr")

# I can do a post request to grab data from the companys db (they told me to use POST instead of GET)
my_request <- httr::POST("https://mycompany.com/ourdb/data/userInfo/", 
         body = '{}',
         httr::add_headers(
           'X-login-Key' = '12345678',
           'OS-Version' = 'iOS 10.3.1',
           'User-Agent' = 'company/1.2.3.456',
           'Content-Type' = 'application/json',
           'X-Access-Token' = 'dkdfjueek12384kdndcos/da8L9u0=',
           'Nonce' = '1',
           'Accept' = 'application/json'),
          ), encode = "json")

http_status(my_request)$category
[1] "Success"

mycontent = content(my_request)
names(mycontent)
[1] "nonce"           "templateJson"    "settingsJson"    "plusButtonTree"  "templateVersion"

mycontent$settingsJson$user_gender
[1] 1

我想将数据库中的user_gender值从1更改为2(或任何其他数字)。我认为我必须使用body参数来执行此操作,但是我不确定如何执行此操作。另外,我不确定是否应该为此使用PUT或PATCH动词/函数。

提前感谢您的帮助!

r httr
1个回答
0
投票

对于原始海报的回复可能为时已晚,但供将来参考:

  • httr包具有支持PUT和PATCH请求的功能,可以使用与POST请求相同的参数来调用它们。
  • 对于此特定示例,可以复制相同的请求,只需将动词更改为PUT或PATCH:
    my_request <- httr::PUT("https://mycompany.com/ourdb/data/userInfo/", 
         body = '{"foo":"bar"}',
         httr::add_headers(
           'X-login-Key' = '12345678',
           'OS-Version' = 'iOS 10.3.1',
           'User-Agent' = 'company/1.2.3.456',
           'Content-Type' = 'application/json',
           'X-Access-Token' = 'dkdfjueek12384kdndcos/da8L9u0=',
           'Nonce' = '1',
           'Accept' = 'application/json'), encode = "json")
  • 标题不必更改,因为它们对PUT或PATCH的作用与对POST的作用相同。

关于更新原始发布者所引用的数据库中信息的细节,必须通过为此设置的API文档来确认实际更新公司数据库中值的方法。要使PUT或PATCH请求被建立以更新数据,它们必须具有特定的路由才能起作用。

否则,与数据库进行交互的服务器将返回404状态代码,并且不会更新数据库。

© www.soinside.com 2019 - 2024. All rights reserved.