O que chamar de uma API HTTP que não é RESTful? [fechadas]

24

O que você chamaria de uma API baseada em HTTP, usa URI para nomear recursos e verbos HTTP (PUT, POST, DELETE, GET ...) para manipular esses recursos?

Segundo as queixas de Roy Fielding, não é REST, porque não há hipermídia.

Internamente, na minha equipe, todos chamam de "API REST". Eu o chamo de "tipo REST", mas não é descritivo e seu significado é confuso. Estou bastante confuso sobre isso, já que há uma grande discordância sobre o REST. Não quero participar de guerras de chamas, mas apenas usando termos corretos.

pkalinow
fonte
6
Quanto do seu tempo no trabalho você gasta realmente programando e quanto tempo gasta decidindo sobre qual terminologia usar? Suponha que você libere um ótimo produto, mas você usou uma terminologia ligeiramente incorreta em alguns documentos internos. Seus clientes se importariam?
Brandin
3
Como você chama e o que chama são duas coisas diferentes.
JeffO 23/03
13
Essa pergunta realmente justifica o desprezo e o ceticismo que está recebendo nos comentários? Não parece escandaloso querer uma maneira decente e amplamente compreendida de se referir a um conceito bastante usado e de alto nível.
precisa
6
@Brandin, palavras significam coisas. Até que eu possa conectar um pendrive no seu cérebro e fazer o download do meu código instantaneamente, terei que usar etiquetas e terminologia para comunicar meu significado. Se eu disser "API HTTP SOAP", isso significará algo significativamente diferente de "API HTTP REST". Nomear coisas é um problema difícil e importante também.
Paul Draper /
6
Esteja preparado para desistir deste tópico com sua equipe na próxima vez em que abordar este tópico e obter resistência. Eu sou o tipo de pessoa que acha importante usarmos a terminologia correta, para que haja menos oportunidades de falhas de comunicação; muitas pessoas não pensam dessa maneira e até o consideram um ataque à inteligência delas, se você tentar avaliar suas palavras / escolhas técnicas; nesse caso, simplesmente não vale a pena discutir. Se você tem um neurótico (ou mais) em sua equipe e eles resistem à noção de que não estão realmente fazendo o REST, é melhor desistir.
Ravenstine 23/03

Respostas:

43

Chame isso de API HTTP .

Está em conformidade com os padrões HTTP e não possui mais nada em camadas (por exemplo, SOAP).

Os padrões HTTP definem recursos, verbos, cabeçalhos, negociação de conteúdo etc.

O REST (REpresentational State Transfer) é uma arquitetura com requisitos que são adequados aos padrões HTTP existentes, mas o HTTP funciona por si só.


Na minha experiência, 90% das "APIs HTTP REST" devem se chamar "apenas" uma API HTTP.

Não tenha vergonha de deixar de lado o rótulo REST. Assim como nos microsserviços e bancos de dados não relacionais, você não precisa ter uma API RESTful para ser legal. Roy se propôs a criar a arquitetura de aplicativos em rede mais durável e compatível com versões anteriores que ele pudesse. Ele fez um bom trabalho. Mas nem tudo precisa de mais de 40 anos de compatibilidade.

Paul Draper
fonte
6
"Na minha experiência, 90% das" APIs HTTP REST "devem se chamar" apenas "uma API HTTP". +1
Artur Gaspar
Eu não poderia concordar mais. Onde trabalho atualmente, criamos a interface do usuário cliente-servidor de última geração usando uma estrutura de aplicativo de ponta em um ciclo de desenvolvimento rápido. Não há nada de RESTful nisso; nós usamos apenas o POST. Não está na moda, mas faz o trabalho, e faz muito bem. É um dos códigos mais limpos que eu já vi.
Robert Harvey
19

Richardson Maturity Models é mais ou menos assim

  1. POST em todos os lugares. Um único terminal. (SABONETE)
  2. POST em todos os lugares. Vários pontos finais. (Recursos)
  3. VERBOS HTTP. Vários pontos finais.
  4. Gosto de 2 e retorna links para recursos. (Repousante)

Então, de acordo com o modelo, eu o chamaria de serviço da web em conformidade com o nível 2 de Richardson ou algo assim.

http://martinfowler.com/articles/richardsonMaturityModel.html

Esben Skov Pedersen
fonte
8

A hipermídia nunca ficou realmente popular com APIs do tipo REST - a ponto de quando uma API realmente implementa a navegação hipermídia, o termo RESTful simplesmente não é suficiente para distingui-la de outras APIs da web "RESTful". O REST se tornou um termo genérico ou qualquer API da Web baseada em recursos e novos nomes como a API Hypermedia  foram criados para se concentrar no conceito de hipermídia.

Eu realmente não quero defender o uso de termos incorretos, mas acho que a interpretação moderna geral do REST significa simplesmente usar URLs uniformes e verbos HTTP para a maioria das pessoas. Não está correto, mas quem conhece a definição de Fieldings também deve saber que muitos outros não. Por outro lado, quem conhece o REST apenas observando como as APIs "RESTful" existentes são implementadas, não saberá do que está falando quando mencionar restrições REST menos conhecidas, como HATEOAS ou código sob demanda. Fielding pode não gostar, mas acho que é tarde para voltar à definição original *. E sejamos honestos: se você ouvir alguém falar sobre sua API REST pela primeira vez, presume instantaneamente que ela não inclui hipermídia, não é?

Insistir na definição correta de RESTful geralmente cria apenas confusão adicional. Como ocorre com muitos termos que mudaram de significado ao longo do tempo ou que as massas simplesmente adotaram de forma errada, eu aprecio se alguém conhece a definição original, mas eu não corrijo quem estiver usando a interpretação moderna mais ampla do REST.

* e também tarde demais para estabelecer novos termos para APIs não hipermídia semelhantes a REST. Como devemos chamá-los de qualquer maneira? ... RESTish ?

kapex
fonte
11
A API do Github tem muita hipermídia. Não sei como isso é típico. Concordo com você que o termo 'RESTful' escapou ao controle de Fielding para abraçar mais coisas.
dcorking
2

É uma interface CRUD (Criar, Ler, Atualizar, Excluir) sobre HTTP.

Não consigo pensar em nenhuma autoridade para apoiar essa afirmação, então espero que você obtenha mais e melhores respostas.

dcorking
fonte
4
Algo RESTful se encaixaria nessa definição também.
Blrfl 23/03
11
@Blrfl AFAICT Alguns APIS RESTful seriam superconjuntos disso. Não atenderia à definição de Fielding se os registros não contenham hiperlinks.
dcorking
2

Você pode chamá-lo como quiser, as pessoas tendem a (quase religiosamente) se prender a qualquer parte das 'especificações' do REST que você não está seguindo e usar isso como um ponto de protesto que é altamente prejudicial ao desenvolvimento. Mas dito isso, o simples fato é que existem (quase) zero serviços que implementam o verdadeiro REST para seus serviços de API.

Em nossa equipe, nomeamos a nossa Stateless APIenquanto ela estava em desenvolvimento, porque tínhamos uma API SOAP stateful e funcional herdada que estávamos substituindo (a própria API herdada nunca teve um nome significativo e acordado, portanto não ficamos muito envolvidos em nomes )

Agora, este projeto tem apenas uma API que é chamada simplesmente the <project> API. Quando a substituirmos, a nova API será conhecida como the new <project> API.

Dar a ele qualquer nome interno sofisticado e descritivo é quase sem sentido, a menos que você tenha tantas APIs que precise diferenciá-la das demais (nesse caso, você provavelmente também deve renomear todas as outras).

Seph
fonte
Embora a pergunta original era pobre, esta resposta é a tentativa sólida de responder à pergunta
Michael Shaw
2

Você pode chamá-lo de API da Web . É um termo muito amplo, mas pode evitar falar sobre o significado de outras definições de tipo de API. O termo é menos técnico e preciso em comparação com alternativas como a API HTTP , mas isso pode ser uma vantagem quando se fala de pessoas não técnicas.

Esse termo também é usado por Leonard Richardson (que definiu o Richardson Maturity Model que já foi mencionado outra resposta - uma medida bem aceita para a proximidade da API de uma arquitetura REST). É o que você obtém se você soltar a parte "RESTful" de uma " API Web RESTful ".

kapex
fonte