Giter Club home page Giter Club logo

estudos-node-js-primeira-api's Introduction

Anotações importantes, definições de API, REST e RESTFUL

API

Cliente (Client)
Garçon (anotar pedidos, levar pedidos para a cozinha) (API)
Cozinha (Server)

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 REpresentational 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 ou um objeto.

6 NECESSIDADES (constraints) para ser RESTful

Uniform Interface: Manter uma uniformidade, uma constância, um padrão na construção da interface. Nossa API precisa ser coerente para quem vai consumi-lá. Precisa fazer sentido para o cliente e não ser confusa. Logo, coisas como: o uso correto dos verbos HTTP; endpoints coerentes (todos os endpoints no plural, por exemplo); usar somente uma linguagem de comunicação (json) e não várias ao mesmo tempo; sempre enviar respostas aos clientes; são exemplos de aplicação de uma interface uniforme.

Client-server: Separação do cliente e do armazenamento de dados (servidor), dessa forma, poderemos ter uma portabilidade do nosso sistema, usando o React para WEB e React Native para o smartphone, 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á autenticado e apto a usar os serviços, e o servidor não pode lembrar que o cliente foi autenticado na requisição anterior. Uma das opções seria usar tokens para as comunicações.

Cacheable: As respostas para uma requisição, deverão ser explicitas ao dizer se aquela resquiçã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 requisições.
-Utilizar plural ou singular na criação dos endpoints? NÃO IMPORTA! use um padrão!!
app.get("/clients")
app.post("/clients")

ou  

app.get("/client")  
app.post("/client")  

-Não deixar barra no final do endpoint
Errado:
app.get("/clients/")
Correto:
app.get("/clients")

VERBOS HTTP

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

Por exemplo a url/uri: http://localhost:3000/clients

clients seria meu 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

estudos-node-js-primeira-api's People

Contributors

lucasbarbosadias avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.