【问题标题】:How to do a PUT or PATCH request in R using httr如何使用 httr 在 R 中执行 PUT 或 PATCH 请求
【发布时间】:2018-01-25 07:21:54
【问题描述】:

所以我看到了一些关于使用 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】:

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

    • 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 状态码,并且数据库不会更新。

    【讨论】:

      猜你喜欢
      • 2016-03-28
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 2020-02-28
      • 1970-01-01
      • 2020-04-20
      相关资源
      最近更新 更多