# Exemplos em JavaScript - Rest APIs

Faça requisições HTTP de saída a partir de uma function usando a API `fetch`, cobrindo os métodos GET, DELETE, POST, PUT e PATCH com dados JSON. Use estes trechos quando sua função precisar chamar uma API REST, seja para ler dados, enviar um formulário ou atualizar um recurso, executando próximo ao usuário na rede global da Azion. Exemplos abaixo:

## Get

```js
var myHeaders = new Headers();
myHeaders.append("Accept", "application/json; version=3");
myHeaders.append("Authorization", "Token [TOKEN VALUE]");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("https://api.azionapi.net/digital_certificates/", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));
```
  
## Delete

```js
fetch('https://example.com/delete-item/' + id, {
 method: 'DELETE',
})
.then(res => res.text()) // or res.json()
.then(res => console.log(res))
```

## Post

```js
function createNewProfile(profile) {
    const formData = new FormData();
    formData.append('first_name', profile.firstName);
    formData.append('last_name', profile.lastName);
    formData.append('email', profile.email);
    return fetch('http://example.com/api/v1/registration', {
        method: 'POST',
        body: formData
    }).then(response => response.json())
}
createNewProfile(profile)
   .then((json) => {
       // handle success
    })
   .catch(error => error);
```

## Put

```js
const putMethod = {
 method: 'PUT', // Method itself
 headers: {
  'Content-type': 'application/json; charset=UTF-8' // Indicates the content 
 },
 body: JSON.stringify(someData) // We send data in JSON format
}
// make the HTTP put request using fetch api
fetch(url, putMethod)
.then(response => response.json())
.then(data => console.log(data)) // Manipulate the data retrieved back, if we want to do something with it
.catch(err => console.log(err)) // Do something with the error
```

## Patch

```js
const API_URL = 'https://api.azion.net/'                                           
const API_PATH = 'api/v3/'
fetch(API_URL + API_PATH + 'tasks', {
 headers: {
   'Accept': 'application/json',
   'Content-Type': 'application/json'
 },
 method: 'patch',                                                             
 body: JSON.stringify( { task: task } )                                       
})
```

## Como funciona

Cada exemplo chama `fetch()` com uma URL e um objeto de opções cujo campo `method` seleciona o verbo HTTP. Metadados da requisição, como tokens de autorização e o `Content-Type`, são passados em `headers`, seja como uma instância de `Headers` ou um objeto simples, enquanto os corpos são enviados como `FormData` ou como uma string JSON produzida por `JSON.stringify`. A promise retornada resolve em um `Response`, que os trechos leem com `.then(response => response.json())` ou `.text()` para consumir o conteúdo, e `.catch()` trata qualquer erro de rede ou de parsing. Executar essas requisições em uma arquitetura distribuída mantém a lógica de chamada próxima ao usuário.

## Recursos relacionados

- [Exemplos em JavaScript](/pt-br/documentacao/devtools/javascript-exemplos/)
- [Runtime APIs](/pt-br/documentacao/produtos/applications/functions/runtime-apis/javascript/fetch-event/)


---