JSON em um httr::POST

Olá pessoal! Tudo bem?

To tentando fazer algo em R que fiz em Python com facilidade. Em Python, tem dois argumentos no requests.post que queria sabe a equivalência deles em R, params e json. Segue um exemplo abaixo:

requests.post(url, params=params, json=payload)

O meu params seria algo como:

params = {
    'x--agent': 'aaaaaa',
    'x--application-id': 'aaaa',
    'x--api-key': 'aaaaa'
}

E o payload um json:

{
        "requests": [{
            "indexName": "nome",
            "params": "aaa=1000&query=&page=0"
        }]
    }

Quais são os argumentos equivalentes no httr::POSTdo R?

Obrigado

Douglas,

O R faz esse tipo de requisição de uma forma um pouco diferente. Eu acho que o jeito do R é pior mesmo, então não vou tentar justificar… Em resumo, o params são passados para os ... da função httr::POST() via httr::add_headers().

# Requisição exemplo
httr::POST(

  # URL
  "https://exemplo.com",

  # Cabeçalhos (params)
  httr::add_headers(
    "x--agent" = "aaaaaa",
    "x--application-id" = "aaaa",
    "x--api-key" = "aaaaa"
  ), 

  # Corpo (request)
  body = list(
    indexName = "nome",
    params = "aaa=1000&query=&page=0"
  ),

  # Codificação do corpo
  encode = "json"
)

1 curtida

Muito obrigado, Caio!

Incentivado por esse jeito, acabei vendo que de forma mais “raw”, seria colocar em body, entre aspas simples, um JSON mesmo, e utilizar como encode = "raw", algo como

# Requisição exemplo
httr::POST(
  
  # URL
  "https://exemplo.com",
  
  # Cabeçalhos (params)
  httr::add_headers(
    "x--agent" = "aaaaaa",
    "x--application-id" = "aaaa",
    "x--api-key" = "aaaaa"
  ), 
  
  # Corpo (request)
  body = '{
        "requests": [{
            "indexName": "nome",
            "params": "aaa=1000&query=&page=0"
        }]
      }',
  
  # Codificação do corpo
  encode = "raw"
)

Created on 2022-03-08 by the reprex package (v2.0.1)