ReST

Restructured State Transfer

  • Criado por Roy Fielding em 2000.
  • Fielding trabalhou na definição do HTTP e no início do projeto Apache.

O que é ReST?

É uma "arquitetura de transmissão de dados sobre HTTP.

("Conjunto de idéias para utilizar HTTP para geração de APIs.")

Linguagem? Qualquer!

  • Python: Flask, Django, Flask-Restless, Django Rest Framework
  • Ruby: Ruby on Rails, Sinatra
  • Java: Spring, Restlet, Jersey
  • C#: Ramone
  • Nodejs: Express
  • Rust: Rustful

ReST e HTTP

  • Métodos HTTP = operação de banco de dados (CRUD).
  • Status das operações são status HTTP.
  • Meta-informações podem ser enviadas nos headers.
    • Atenticação é feita por HTTP auth.
  • Sem transações/sessões -- todas as operações são atômicas.
Em HTTP, usam-se métodos para descrever o que quer ser feito:
  • POST requisita informações, com conteúdo.
  • GET requisita informações, sem conteúdo.

(Ainda: PUT, DELETE, HEAD, TRACE, PATCH, OPTIONS)

Em ReST, métodos HTTP viram CRUD:
OperaçãoMétodo
CreatePOST
RetrieveGET
UpdatePUT
DeleteDELETE