/API-RESTFUL-Node.JS

Projeto de aprendizado e aperfeiçoamento no desenvolvimento de APIs com Node.JS

Primary LanguageJavaScript

API

Conceito de API simplificado

RESTAURANTE

Você seria o cliente (App ou Aplicação Web) que faria um pedido, o garçom (API) anotaria seu pedido e levaria para a cozinha (Server).

API (application programming interface)

Acrônimo de Application Programming Interface (Interface de Programação de Aplicações) é basicamente um conjunto de rotinas e padrões estabelecidos por uma aplicação, para que outras aplicações possam utilizar as funcionalidades desta aplicação.

  • Responsável por estabelecer comunicação entre diferentes serviços.
  • Meio de campo entre as tecnologias.
  • Intermediador para troca de informações.

REST

Um acrônimo para Representation State Transfer (Transferência de Estado Representativo).

Será feita a transferência de dados de uma maneira simbólica, figurativa, representativa, de maneira didática.

A transferência de dados, geralmente, usando o protocolo HTTP.

O Rest, delimita algumas obrigações nessas transferências de dados.

Resources seria então, uma entidade, um objeto.

6 NECESSIDADES ( constraints ) para ser RESTFUL

  • Client-server: Separação do clientes e do armazenamento de dados (Servidor), dessa forma, poderemos ter uma portabilidade do nosso sistema, usando o React para Web e React Native para os smartphones, por exemplo.

  • Stateless: Cada requisição que o cliente faz para o servidor, deverá conter todas as informações necessárias para o servidor entender e responder (RESPONSE) a requisição (REQUEST). Exemplo: A sessão do usuário deverá ser enviada em todas as requisições, para saber se aquele usuário está autentificado e apto a usar os serviços, e o servidor não pode lembrar que o cliente foi autentificado na requisição anterior. Nos nossos cursos, temos por padrão usar tokens para as comunicações.

  • Cacheable: As respostas para uma requisição, deverão ser explicitas ao dizer se aquela requisição, pode ou não ser cacheada pelo cliente.

  • Layered System: O cliente acessa a um endpoint, sem precisar saber da complexidade, de quais passos estão sendo necessários para o servidor responder a requisição, ou quais outras camadas o servidor estará lidando, para que a requisição seja respondida.

  • Code on demand (optional): Dá a possibilidade da nossa aplicação pegar códigos, como o javascript, por exemplo, e executar no cliente.

RESTFUL

RESTful, é a aplicação dos padrões REST.

BOAS PRÁTICAS

  • Utilizar verbos HTTP para nossas requisições.
  • Utilizar plural ou singular na criação dos endpoints ? NÃO IMPORTA! use um padrão !!
  • Não deixar barra no final do endpoint.
  • Nunca deixe o cliente sem resposta!

VERBOS HTTP

  • GET: Receber dados de um Resource.
  • POST: Enviar dados ou informações para serem processados por um Resource.
  • PUT: Atualizar os dados de um Resource.
  • DELETE: Deletar um Resource.

STATUS DAS RESPOSTAS

  • 1xx: Informação
  • 2xx: Sucesso
    • 200: OK
    • 201: CREATED
    • 204: Não tem conteúdo PUT POST DELETE
  • 3xx: Redirection
  • 4xx: Client Error
    • 400: Bad Request
    • 404: Not Found!
  • 5xx: Server Error
    • 500: Internal Server Error