Quando devo usar o AtomPub?

13

Tenho conduzido algumas pesquisas sobre o design de serviços da Web RESTful e cheguei ao que considero um ponto de decisão fundamental, então pensei em oferecer à comunidade para obter alguns conselhos.

De acordo com os princípios de uma arquitetura RESTful, quero apresentar uma API detectável, por isso darei suporte aos vários verbos HTTP da maneira mais completa possível. Minha dificuldade vem com a escolha da representação desses recursos. Veja bem, seria fácil criar minha própria API que cobre como os resultados da pesquisa devem ser apresentados e como os links para outros recursos são fornecidos, mas isso seria exclusivo para o meu aplicativo.

Eu li sobre o Atom Publishing Protocol ( RFC 5023 ) e como o OData promove seu uso, mas parece adicionar um nível extra de abstração sobre o que é (atualmente) uma API bastante simples.

Então, minha pergunta é: quando um desenvolvedor deve selecionar AtomPub como sua escolha de representação - se é que existe? E se não, qual é a atual abordagem recomendada?

Gary Rowe
fonte
1
Há uma discussão interessante sobre este aqui: comments.gmane.org/gmane.comp.web.services.rest/16023
Gary Rowe

Respostas:

11

Depois de fazer uma boa quantidade de pesquisas sobre o assunto, aqui estão minhas descobertas:

Parece haver três formatos e abordagens principais: AtomPub, OData e HAL. Resumi a pesquisa para cada um abaixo.

AtomPub

  • Pro: Padrão bem estabelecido
  • Pro: funciona com XML e JSON
  • Pro: Possui excelente suporte Java através do Apache Abdera
  • Con: Abdera introduz muitas dependências
  • Con: Muito complexo para trabalhar no lado do servidor
  • Con: difícil criar um cliente JavaScript completo

OData

  • Pro: Cria no AtomPub
  • Pro: funciona com XML e JSON
  • Pro: Possui bom suporte a Java através do projeto odata4j
  • Pro: fornece uma boa estrutura de consulta URI

  • Con: Apresenta uma estrutura completa (substitui essencialmente o Dropwizard)

  • Con: Muito complexo para trabalhar, particularmente o modelo de dados da entidade (EDM)
  • Con: difícil encontrar uma boa biblioteca de clientes JavaScript sem depender de ferramentas somente para Windows para EDM

HAL

  • Pro: introduz uma abordagem leve e extensível
  • Pro: funciona com XML e JSON
  • Pro: Trivial para criar um modelo JAXB para implementá-lo (sem dependências)
  • Pro: fornece uma boa estrutura de vinculação
  • Pro: Trivial para criar um cliente JavaScript usando a análise XML do jQuery
  • Con: Não ratificado (embora a IETF tenha sido abordada)

Então, quando devo usar o AtomPub?

Pelo exposto, você deve escolher o AtomPub se estiver satisfeito com a complexidade adicional e quiser usar bibliotecas padrão para seus clientes. Provavelmente seria esse o caso se você estiver executando um grande repositório de documentos.

Eu coloquei mais detalhes (que estão fora do escopo desta pergunta) em um artigo recente do blog que pode ajudar outros.

Gary Rowe
fonte