Back-End

8 jul, 2019

#cURL com PHP para APIs RESTful

Publicidade

A biblioteca cURL é ideal e completa para quem quer realizar requisições ou transferir dados através do backend de suas aplicações. Com o cURL alem de requisões simples como GET e POST é possivel realizar requisições utilizando outros protocolos com FTP, POP, IMAP e outros.

Antes de começarmos temos que chamar a função que fará com que nosso desenvolvimento funcione.

```php
$curl = curl_init();

```

## Configurando na pratica

Ao iniciarmos o recurso cURL podemos utilizar parâmetros que configurarão nossa requisição. Veja abaixo alguns parâmetros importantes:

– `CURLOPT_RETURNTRANSFER` – Retorna uma string
– `CURLOPT_CONNECTTIMEOUT` – Segundos tentando conectar até o timeout
– `CURLOPT_TIMEOUT` – Segundos limite para execução do cURL
– `CURLOPT_USERAGENT` – String contendo um user-agent
– `CURLOPT_URL` – URL – enviar a requisição
– `CURLOPT_PORT` – Informe de porta
– `CURLOPT_HTTPHEADER` – Cabeçalhos da requisição
– `CURLOPT_POST` – Envia a requisição como POST
– `CURLOPT_POSTFIELDS` – Array de informações enviadas como POST

Para informarmos um parametro devemos utilizar a função `curl_setopt()` e caso necessário podemos informar mais de um parametro utilizando a função `curl_setopt_array()` como nos exemplos abaixo:

Exemplo 01:

```php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://dominio-exemplo.com.br');
```

Exemplo 02:

```php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'http://dominio-exemplo.com.br'
]);
```

## ENVIO

Agora que ja entendemos como configurar o nosso envio, vamos utilizar a função `curl_exec()` que executará o nosso envio. Ao enviarmos, podemos nos deparar com duas respostas `false` que se refere quando há algum erro na execução da requisição e `true` que ocorre quando a requisição foi realizada.

Além das funções e resultados apresentados acima, é importante que, ao terminar a requisição, o cURL seja fechado para limpar os recursos que estão sendo utilizados no momento. E, para isso, preparei exemplos abaixo que você poderá copiar e colar em sua aplicação, caso precise.

## EXEMPLO: GET

```php
// Inicia
$curl = curl_init();

// Configura
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'http://dominio-exemplo.com.br/?item=valor-do-item'
]);

// Envio e armazenamento da resposta
$response = curl_exec($curl);

// Fecha e limpa recursos
curl_close($curl);
```

## EXEMPLO: POST

```php
// Inicia
$curl = curl_init();

// Configura
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'http://dominio-exemplo.com.br',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => [
item1 => 'valor-do-item-1',
item2 => 'valor-do-item-2'
]
]);
// Envio e armazenamento da resposta
$response = curl_exec($curl);

// Fecha e limpa recursos
curl_close($curl);
```

## RETORNO DE ERROS

Com o tempo você ira se familiarizar mais com a biblioteca e e com isso começara a identificar que erros podem acontecer e devem ser tratados, para isso você pode usar as funcões `curl_error()` (retorna em formato string) e `curl_errno() ` (retorna em formato código).

Com este conhecimento você será capaz de explorar e utilizar APIs RESTful em diversos projetos e aplicações móveis de maneira eficiente como as maiores atuais empresas do mundo utilizam.