如何使用httr

时间:2018-01-25 07:21:55

标签: r httr

所以我已经看过一些关于使用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动词/功能。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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状态代码,并且不会更新数据库。