# REST APIs, RESTful API ### O que significa REST API? `API` refere-se a `Application Program Interface`, uma palavra grande para explicar como um programa é utilizado por entidades externas. `REST` refere-se a `Representational State Transfer`, é uma série de normas para se montar um tipo especifico de arquitura que oferece uma API `pública`. `RESTful`, por sua vez, refere-se a capacidade de um serviço seguir as regras REST; De uma maneira mais simples, todo programa possui uma forma de se interagir, alguns possuem interface gráfica, outros possuem um acesso via código, outros via voz. Essas formas de interação não são necessariamente a melhor forma para outro programa utilizar, uma vez que elas estão associadas a utilização de um usuário final, mas ainda sim são utilizáveis. Então, Google Assistant possuem algumas apis, para o usuário final, utilizamos a áudio como comunicação. Mas existe uma api via código também. Google Maps também possui uma interface gráfica que você de certa forma poderia hackear para enviar interagir com o serviço, mas você possui uma documentação escrita e aberta de como é possível interagir com esses serviços. REST API's foram uma resposta a necessidade de criarmos uma forma regrada de como sistemas se comunicam entre si utilizando o protocolo REST; E vamos supor um cadastro de usuários? Para obtenção de usuários: ```=bash GET /users HTTP/1.1 ``` Para obter um usuário em particular: ```=bash GET /users/b13e887d-937a-429b-9e0a-4edba0e1b23f HTTP/1.1 ``` Para deletar um usuário em particular: ```=bash DELETE /users/b13e887d-937a-429b-9e0a-4edba0e1b23f HTTP/1.1 ``` Para atualizar um usuário por inteiro em particular: ```=bash PUT /users/b13e887d-937a-429b-9e0a-4edba0e1b23f HTTP/1.1 nome: Nícolas Deçordi idade: 27 job: Team Lead Developer ``` Para atualizar um usuário parcialmente: ```=bash PATCH /users/b13e887d-937a-429b-9e0a-4edba0e1b23f HTTP/1.1 job: Tech Instructor ```