---
title: "Guia de pedidos POST com curl"
slug: curl-post-request-guide
date: 2023-12-06T10:25:18+00:00
modified: 2025-11-04T08:55:58+00:00
permalink: https://brightdata.com.br/blog/procedimentos/curl-post-request-guide
type: blog
---

[ Blog ](https://brightdata.com.br/blog "Blog") / [procedimentos](https://brightdata.com.br/blog/procedimentos)







 [procedimentos](https://brightdata.com.br/blog/procedimentos)

# Guia de pedidos POST com curl

Saiba mais sobre o pedido POST com cURL, o que é, como enviar um pedido POST com cURL e muito mais.

 12 min de leitura





 [ ![White number one with a flame on top.](https://media.brightdata.com.br/2023/03/Favicon-2-1-50x50.png) ](https://brightdata.com/blog/authors/ivan-kahl)

 [Ivan Kahl

 ](https://brightdata.com/blog/authors/ivan-kahl)





 ![curl post request guide](https://media.brightdata.com.br/2023/12/curl-GET-Request-Guide-1.svg)





[curl](https://curl.se/) é uma ferramenta de linha de comandos para transferir dados utilizando vários protocolos de rede. Disponível em todos os principais sistemas operativos, curl tornou-se a ferramenta padrão para enviar pedidos HTTP a partir da linha de comandos.

O serviço multiplataforma de curl suporta protocolos como HTTP, HTTPS, FTP e IMAP, facilitando o envio de pedidos para APIs e a [raspagem de sítios web utilizando curl](https://brightdata.com.br/blog/procedimentos/raspagem-da-web-com-curl). Com sua ampla disponibilidade e suporte a vários protocolos, você encontrará frequentemente curl referenciado na documentação da API REST como uma maneira rápida de testar chamadas de API diretamente da linha de comando:

![aprenda a enviar pedidos POST utilizando curl a partir da linha de comando](https://media.brightdata.com/2023/12/wExgR5C-1-1024x697.png)Neste artigo, você aprenderá como enviar pedidos POST usando curl a partir da linha de comando.

## O que é um pedido POST

Um pedido POST é um dos métodos HTTP mais comuns e serve para enviar dados para um servidor.

Quando se envia um pedido POST, os dados transmitidos são incluídos no corpo do pedido. Isto permite-lhe enviar dados de forma mais discreta do que se os enviasse no URL (como faria com um pedido GET). Também pode enviar significativamente mais dados num pedido POST, contornando as restrições de comprimento de URL impostas pelos navegadores para pedidos GET.

É frequente encontrar pedidos POST utilizados para submeter formulários, carregar ficheiros ou enviar dados JSON para uma API. Em comparação com GET, os pedidos POST não são normalmente armazenados em cache e os dados não são mostrados no histórico do navegador, uma vez que os dados do pedido estão no corpo do pedido.

## Como enviar um pedido POST com curl

Antes de começar este tutorial, é necessário instalar curl no seu computador. Execute o seguinte comando para verificar se curl está instalado:

```none
curl --version

```

Se receber um erro a indicar que o comando não foi encontrado, tem de instalar o utilitário.

### Instalar curl

Seguem-se as instruções sobre como instalar curl em todos os principais sistemas operativos:

#### <a></a>Windows

No Windows, pode utilizar WinGet, o gestor de pacotes predefinido no Windows 11, para instalar curl:

```none
winget install curl.curl

```

Chocolatey é outro gerenciador de pacotes para Windows que permite instalar curl usando o seguinte comando:

```none
choco install curl

```

#### <a></a>Linux

curl está disponível na maioria dos gerenciadores de pacotes de Linux. Em Ubuntu/Debian, use o seguinte comando para instalar curl:

```none
apt-get install curl

```

Red Hat Enterprise Linux (RHEL), CentOS e Fedora permitem instalar curl usando o Yellowdog Updater Modified (YUM), assim:

```none
yum install curl

```

Se estiver a correr OpenSUSE, pode instalar curl usando o seguinte comando no terminal:

```none
zypper install curl

```

Finalmente, Arch Linux permite-lhe usar o pacman para instalar curl com este comando:

```none
pacman -Sy curl

```

#### <a></a>macOS

Homebrew é a maneira mais fácil de instalar curl no macOS. Certifique-se de que tem Homebrew instalado e, em seguida, execute o seguinte comando:

```none
brew install curl

```

Agora que instalou curl no seu sistema operativo, está pronto para aprender a fazer pedidos POST.

### Fazer um pedido POST

curl permite-lhe especificar várias opções quando envia pedidos POST. As secções seguintes mostrarão algumas características comuns de curl com que se poderá deparar ao fazer pedidos POST utilizando o utilitário.

#### Especificar o método POST

Ao efetuar pedidos HTTP utilizando curl, é necessário especificar o método HTTP que pretende executar. Os métodos HTTP incluem GET, POST, PUT e DELETE. curl permite-lhe especificar o método HTTP que pretende utilizar utilizando o sinalizador de linha de comando `-X`.

Por exemplo, para enviar um pedido POST para `https://httpbin.org/anything`, pode executar o seguinte comando curl no seu terminal:

```none
curl -X POST https://httpbin.org/anything

```

httpbin.org faz eco do corpo do pedido e dos cabeçalhos na resposta. A sua resposta deve ser semelhante a esta:

```none
{
  "args": {},
  "data": "",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Host": "httpbin.org",
    "User-Agent": "curl/8.1.2",
    "X-Amzn-Trace-Id": "Root=1-11111111-111111111111111111111111"
  },
  "json": null,
  "method": "POST",
  "origin": "0.0.0.0",
  "url": "https://httpbin.org/anything"
}

```

O sinalizador `-X POST` é o equivalente à utilização do sinalizador `--request POST`, pelo que também pode executar o seguinte comando e obter o mesmo resultado:

```none
curl --request POST https://httpbin.org/anything

```

A resposta tem o mesmo aspeto que a anterior.

Pode ler mais sobre os sinalizadores `-X` e `--request` [na documentação oficial](https://curl.se/docs/manpage.html#-X:~:text=%2DX%2C%20%2D%2Drequest%20%3Cmethod%3E).

#### Definir o Content-Type

Ao enviar um pedido POST, é importante especificar o tipo de conteúdo que está a enviar no corpo do pedido para que o servidor possa interpretar corretamente o corpo do pedido. É possível utilizar tipos MIME no cabeçalho `Content-Type` num pedido HTTP para especificar o formato do corpo do pedido.

Por exemplo, se estiver a enviar JSON no corpo do pedido, tem de dizer ao servidor web para esperar conteúdo JSON, definindo o cabeçalho `Content-Type` como `application/json`. Se estivesse a enviar XML, o cabeçalho Content-Type deveria ser `application/xml`. Para obter mais informações, consulte a documentação oficial sobre `Content-Type`.``

curl permite-lhe especificar cabeçalhos para um pedido HTTP utilizando o sinalizador `-H`. Por exemplo, se estiver a enviar JSON num pedido POST, o seguinte comando curl mostra como pode definir o cabeçalho `Content-Type` para o pedido:

```none
curl -X POST -H 'Content-Type: application/json' -d '{}' https://httpbin.org/anything

```

Na resposta, pode ver o cabeçalho `Content-Type` definido como `application/json`:

```none
{
  "args": {},
  "data": "{}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Content-Length": "2",
    "Content-Type": "application/json",
    "Host": "httpbin.org",
    "User-Agent": "curl/8.1.2",
    "X-Amzn-Trace-Id": "Root=-11111111-111111111111111111111111"
  },
  "json": {},
  "method": "POST",
  "origin": "0.0.0.0",
  "url": "https://httpbin.org/anything"
}

```

O sinalizador -H também pode ser especificado utilizando o sinalizador `--header` mais longo. Neste caso, o seu comando curl seria parecido com isto:

```none
curl -X POST --header 'Content-Type: application/json' -d '{}' https://httpbin.org/anything

```

A sua resposta seria igual à anterior.

#### Enviar dados

Deve ter reparado que os comandos anteriores tinham um sinalizador `-d`. Este sinalizador permite-lhe especificar os dados a enviar no corpo do pedido. Pode utilizar o sinalizador para passar qualquer cadeia de valores rodeada de aspas, da seguinte forma:

```none
curl -X POST -H 'Content-Type: application/json' -d '{
    "FirstName": "Joe",
    "LastName": "Soap"
}' https://httpbin.org/anything

```

Verá que httpbin.org mostra os dados do corpo que enviou na propriedade `data` da resposta.

Se tiver um ficheiro com dados que pretende que curl envie no corpo, especifique o nome do ficheiro prefixado com o carácter `@`. O seguinte comando lê o conteúdo de `body.json` e envia-o através do corpo do pedido:

```none
curl -X POST -H 'Content-Type: application/json' -d @body.json https://httpbin.org/anything

```

Neste caso, o ficheiro `body.json` contém o seguinte:

```none
{
    "FirstName": "Joe",
    "LastName": "Soap"
}

```

Ao enviar isso, httpbin.org deve retornar a seguinte resposta:

```none
{
  "args": {},
  "data": "{t"FirstName": "Joe",t"LastName": "Soap"}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Content-Length": "41",
    "Content-Type": "application/json",
    "Host": "httpbin.org",
    "User-Agent": "curl/8.1.2",
    "X-Amzn-Trace-Id": "Root=1-11111111-111111111111111111111111"
  },
  "json": {
    "FirstName": "Joe",
    "LastName": "Soap"
  },
  "method": "POST",
  "origin": "0.0.0.0",
  "url": "https://httpbin.org/anything"
}

```

O sinalizador `--data` comporta-se da mesma forma que `-d`, portanto pode utilizá-los de forma intercambiável.

##### Enviar dados JSON

Na secção anterior, viu como podia enviar dados JSON definindo o cabeçalho `Content-Type` como `application/json` e, em seguida, passando os dados JSON utilizando o sinalizador `-d`. Ao enviar um pedido, também é importante informar o servidor web sobre o formato dos dados que espera como resposta. Pode utilizar o cabeçalho `Accept` com o valor `application/json` para informar o servidor web de que gostaria de receber uma resposta JSON.

O comando a seguir envia um pedido JSON para o servidor e permite que o servidor saiba que você gostaria de receber JSON em resposta:

```none
curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -d '{
    "FirstName": "Joe",
    "LastName": "Soap"
}' https://httpbin.org/anything

```

Verá que as propriedades `data` e `json` no corpo da resposta contêm os dados JSON que enviou no pedido:

```none
{
  "args": {},
  "data": "{n    "FirstName": "Joe",n    "LastName": "Soap"n}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/json",
    "Content-Length": "50",
    "Content-Type": "application/json",
    "Host": "httpbin.org",
    "User-Agent": "curl/8.1.2",
    "X-Amzn-Trace-Id": "Root=1-11111111-111111111111111111111111"
  },
  "json": {
    "FirstName": "Joe",
    "LastName": "Soap"
  },
  "method": "POST",
  "origin": "0.0.0.0",
  "url": "https://httpbin.org/anything"
}

```

Enviar e receber dados JSON é comum ao enviar pedidos HTTP, por isso curl oferece um sinalizador `--json` que define os cabeçalhos `Content-Type` e `Accept` por você e envia os dados JSON no corpo do pedido. Utilizando este sinalizador, pode encurtar o seu comando para enviar JSON num pedido POST:

```none
curl -X POST --json '{
    "FirstName": "Joe",
    "LastName": "Soap"
}' https://httpbin.org/anything

```

Isto dá a mesma resposta que anteriormente:

```none
{
  "args": {},
  "data": "{n    "FirstName": "Joe",n    "LastName": "Soap"n}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/json",
    "Content-Length": "50",
    "Content-Type": "application/json",
    "Host": "httpbin.org",
    "User-Agent": "curl/8.1.2",
    "X-Amzn-Trace-Id": "Root=1-11111111-111111111111111111111111"
  },
  "json": {
    "FirstName": "Joe",
    "LastName": "Soap"
  },
  "method": "POST",
  "origin": "0.0.0.0",
  "url": "https://httpbin.org/anything"
}

```

O sinalizador `--json` foi lançado na versão 7.82 de curl em março de 2022, por isso certifique-se que tem a última versão de curl instalada antes de a utilizar.

##### Enviar dados XML

curl também permite enviar dados noutros formatos, como XML. Para enviar dados XML, é necessário definir o cabeçalho `Content-Type` como `application/xml` e passar os dados XML no corpo do pedido utilizando o sinalizador `-d`. Também pode dizer ao servidor web que espera que a resposta seja XML, definindo o cabeçalho `Accept` como `application/xml`.

O comando seguinte mostra como pode enviar um objeto XML num pedido POST utilizando curl:

```none
curl -X POST -H 'Content-Type: application/xml' -H 'Accept: application/xml' -d '<Person>
    <FirstName>Joe</FirstName>
    <LastName>Soap</LastName>
</Person>' https://httpbin.org/anything

```

Encontrará os dados do pedido XML na propriedade `dada` devolvida por httpbin.org:

```none
{
  "args": {},
  "data": "<Person>n    <FirstName>Joe</FirstName>n    <LastName>Soap</LastName>n</Person>",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/xml",
    "Content-Length": "79",
    "Content-Type": "application/xml",
    "Host": "httpbin.org",
    "User-Agent": "curl/8.1.2",
    "X-Amzn-Trace-Id": "Root=1-11111111-111111111111111111111111"
  },
  "json": null,
  "method": "POST",
  "origin": "0.0.0.0",
  "url": "https://httpbin.org/anything"
}

```

##### Enviar FormData

Pode utilizar `FormData` para enviar pares de dados de valor-chave para um servidor web. Como o nome indica, este formato de dados é utilizado quando se submete um formulário numa página web. Os pares de valores chave têm um nome de campo e um valor.

curl permite-lhe especificar FormData utilizando o sinalizador `-F` ou `--form`. Ao usar o sinalizador, especifique o nome e o valor do campo no seguinte formato: `-F <name=content>` ou `--form <name=content>`.

O trecho seguinte mostra um comando curl que envia um pedido POST usando `FormData` com os campos `FirstName` e `LastName`:

```none
curl -X POST -F FirstName=Joe -F LastName=Soap https://httpbin.org/anything

```

Encontrará os nomes e valores dos campos do formulário na propriedade `form` do objeto de resposta httpbin.org:

```none
{
  "args": {},
  "data": "",
  "files": {},
  "form": {
    "FirstName": "Joe",
    "LastName": "Soap"
  },
  "headers": {
    "Accept": "*/*",
    "Content-Length": "248",
    "Content-Type": "multipart/form-data; boundary=------------------------e2bb56049a60b8b8",
    "Host": "httpbin.org",
    "User-Agent": "curl/8.1.2",
    "X-Amzn-Trace-Id": "Root=1-11111111-111111111111111111111111"
  },
  "json": null,
  "method": "POST",
  "origin": "0.0.0.0",
  "url": "https://httpbin.org/anything"
}

```

Utiliza-se o sinalizador `-F` para cada campo que se pretende enviar para o servidor.

#### Carregar ficheiros

Pode utilizar `FormData` para carregar ficheiros num pedido POST, anexando o ficheiro a um campo. Para que curl saiba que um campo `FormData` contém um ficheiro, introduza a rota para o ficheiro no valor do campo prefixado com o carácter `@`.

O seguinte comando curl carrega um ficheiro chamado `Contract.pdf` no seu diretório de trabalho. O comando utiliza um campo chamado `File` para carregar o ficheiro:

```none
curl -X POST -F <a class="__cf_email__" data-cfemail="c98fa0a5acf4898aa6a7bdbba8aabde7b9adaf" href="/cdn-cgi/l/email-protection">[email protected]</a> https://httpbin.org/anything

```

A resposta contém o ficheiro completo, pelo que é longa, mas deve ter o seguinte aspeto:

```none
{
  "args": {},
  "data": "",
  "files": {
    "File": "..."
  },
  "form": {},
  "headers": {
    "Accept": "*/*",
    "Content-Length": "246",
    "Content-Type": "multipart/form-data; boundary=------------------------19ed1fc3be4d30c7",
    "Host": "httpbin.org",
    "User-Agent": "curl/8.1.2",
    "X-Amzn-Trace-Id": "Root=1-11111111-111111111111111111111111"
  },
  "json": null,
  "method": "POST",
  "origin": "0.0.0.0",
  "url": "https://httpbin.org/anything"
}

```

#### Enviar credenciais

Muitos ponto finais HTTP requerem autenticação para enviar pedidos. O servidor web decide qual o método de autenticação a utilizar. Um desses métodos de autenticação é o esquema de autenticação básica, que permite enviar credenciais constituídas por um nome de usuário e uma palavra-passe no pedido. O servidor verifica então as credenciais e, se estiverem corretas, processa o pedido.

curl simplifica o envio de credenciais de autenticação básicas utilizando o sinalizador `-u` ou `--user`. Em seguida, especifica o nome de usuário e a palavra-passe e separa-os com `:` (dois pontos), desta forma: `-u <username:password>`.

O seguinte trecho usa curl para enviar um pedido POST com credenciais de usuário e um corpo JSON:

```none
curl -X POST -u 'admin:password123' --json '{
    "FirstName": "Joe",
    "LastName": "Soap"
}' https://httpbin.org/anything

```

Repare como curl codifica o nome de usuário e a palavra-passe e envia-os no cabeçalho `Authorization`:

```none
{
  "args": {},
  "data": "{n    "FirstName": "Joe",n    "LastName": "Soap"n}",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/json",
    "Authorization": "Basic YWRtaW46cGFzc3dvcmQxMjM=",
    "Content-Length": "50",
    "Content-Type": "application/json",
    "Host": "httpbin.org",
    "User-Agent": "curl/8.1.2",
    "X-Amzn-Trace-Id": "Root=1-11111111-111111111111111111111111"
  },
  "json": {
    "FirstName": "Joe",
    "LastName": "Soap"
  },
  "method": "POST",
  "origin": "0.0.0.0",
  "url": "https://httpbin.org/anything"
}

```

## Conclusão

Este artigo mostrou-lhe como enviar pedidos POST utilizando o utilitário de linha de comandos curl. Aprendeu a utilizar o sinalizador `-X` para especificar que pretende enviar um pedido POST. Também definiu os cabeçalhos `Content-Type` e `Accept` utilizando os sinalizadores `-H` e `--header` para que o servidor web saiba em que formato estão os dados. Para enviar dados no corpo do pedido, utilizou o sinalizador `-d` juntamente com os dados que pretendia enviar.

Também viu alguns exemplos de como enviar vários tipos de dados, incluindo JSON, XML e `FormData`, e aprendeu a enviar credenciais de autenticação básicas no seu pedido utilizando os sinalizadores `-u` e `--user`.

Embora este artigo tenha demonstrado os sinalizadores básicos incluídos em curl e como usá-los, curl oferece mais recursos que você pode querer explorar, incluindo o uso de variáveis, o envio de cookies com pedidos e o [envio de pedidos usando um proxy](/blog/procedimentos/curl-with-proxies). Muitas linguagens de programação também fornecem bibliotecas que permitem trabalhar com curl a partir dessa linguagem de programação, incluindo [Python](https://brightdata.com.br/blog/procedimentos/curl-with-python), Node.js e Rust.

Procura uma solução de raspagem? Fale com um dos nossos especialistas em dados e veja qual dos nossos produtos se adapta melhor às suas necessidades.



Contate-nosTeste grátis![google social icon](/wp-content/themes/brightdata/assets/images/ic_google.svg)









 Índice







Dedicated Scraper APIs &amp; No-Code Scrapers

Over 1000 scrapers for all popular domains. Simplify your web scraping.

[See pricing](/pricing/web-scraper "See pricing")

Just want data? Skip scraping.

Hundreds of ready-to-use datasets from all popular domains.

[See pricing](/pricing/datasets "See pricing")







 [ ](https://news.ycombinator.com/submitlink?t=Guia+de+pedidos+POST+com+curl&u=https://brightdata.com.br/blog/procedimentos/curl-post-request-guide) [ ](https://www.linkedin.com/shareArticle?mini=true&title=Guia+de+pedidos+POST+com+curl&url=https://brightdata.com.br/blog/procedimentos/curl-post-request-guide) [ ](http://www.reddit.com/submit?title=Guia+de+pedidos+POST+com+curl&url=https://brightdata.com.br/blog/procedimentos/curl-post-request-guide)







##  Você também pode estar interessado em

 [ ![curl post request guide](https://media.brightdata.com.br/2023/12/curl-GET-Request-Guide-1.svg) ](https://brightdata.com.br/blog/procedimentos/curl-post-request-guide "Guia de pedidos POST com curl")

 [procedimentos



 ![White number one with a flame on top.](https://media.brightdata.com.br/2023/03/Favicon-2-1-50x50.png)

Ivan Kahl





### Guia de pedidos POST com curl

Saiba mais sobre o pedido POST com cURL, o que é, como enviar um pedido POST com cURL e muito mais.



 06-Dec-2023

 12 min de leitura

 ](https://brightdata.com.br/blog/procedimentos/curl-post-request-guide)

 [ ![curl GET Request with PHP](https://media.brightdata.com.br/2023/11/curl-GET-Request-with-PHP.svg) ](https://brightdata.com.br/blog/procedimentos/curl-get-request-with-php "Pedido GET com curl em PHP")

 [procedimentos



 ![](https://media.brightdata.com.br/2023/08/Kevin-Kimani-50x50.png)

Kevin Kimani





### Pedido GET com curl em PHP

Guia de pedidos get com cURL em PHP. Saiba mais sobre o pedido GET e como implementar um pedido GET com curl em PHP.



 22-Nov-2023

 4 min de leitura

 ](https://brightdata.com.br/blog/procedimentos/curl-get-request-with-php)

 [ ![How To Set a Proxy in Superagent](https://media.brightdata.com.br/2023/11/How-To-Set-a-Proxy-in-Superagent.svg) ](https://brightdata.com.br/blog/procedimentos/superagent-proxy "Como configurar um proxy no SuperAgent")

 [procedimentos



 ![Man with beard smiling, wearing black shirt.](https://media.brightdata.com.br/2021/07/avivb-50x50.png)

Aviv Besinsky





### Como configurar um proxy no SuperAgent

Aprenda a configurar um proxy no SuperAgent neste tutorial passo a passo



 22-Nov-2023

 11 min de leitura

 ](https://brightdata.com.br/blog/procedimentos/superagent-proxy)
