Quais são as diferenças entre django-tastypie e djangorestframework? [fechadas]


157

Por que você usaria um sobre o outro para expor uma API para seu aplicativo Django?

http://pypi.python.org/pypi/djangorestframework/

http://pypi.python.org/pypi/django-tastypie

Respostas:


206

Como autor do django-rest-framework, eu tenho um viés óbvio;) mas minha opinião esperançosamente razoavelmente objetiva sobre isso é algo como:

TastyPie

  • Como Torsten observou, você não vai dar muito errado com algo escrito pelas mesmas pessoas que o incrível palheiro de django . Pelo que eu vi na lista de discussão, Daniel Lindsey et al são super úteis, e Tastypie é estável, abrangente e bem documentado
  • É excelente em fornecer um conjunto sensato de comportamento padrão e facilitar a criação de uma API com esse estilo.

Estrutura REST do Django

  • Fornece APIs autoexplicativas para navegação em HTML. (Por exemplo, consulte a API do tutorial .) Ser capaz de navegar e interagir com a API diretamente no navegador é uma grande vitória na usabilidade.
  • Tenta ficar perto dos idiomas do Django por toda parte - construído sobre as visualizações baseadas em classe do Django, etc ... (Considerando que o TastyPie surgiu antes que os CBVs do Django existissem, ele usa sua própria implementação de visualizações baseadas em classe)
  • Eu gostaria de pensar que a arquitetura subjacente é muito bem construída, dissociada, etc ...

De qualquer forma, ambos são bons. Eu provavelmente caracterizaria Tastypie como fornecendo a você um conjunto sensato de padrões prontos para uso, e a estrutura REST como muito bem dissociada e flexível. Se você planeja investir muito tempo na API, recomendo que você navegue nos documentos e na base de códigos de cada uma e tente ter uma ideia do que mais lhe convém.

Obviamente, há também o 'Por que TastyPie?' seção README e 'Estrutura REST 3' .

Veja também a postagem do blog de Daniel Greenfeld sobre Escolhendo uma estrutura de API para o Django , a partir de maio de 2012 (vale a pena notar que isso ainda estava alguns meses antes do grande lançamento do REST framework 2.0).

Também um par de linhas em Reddit com pessoas fazendo esta mesma pergunta, a partir de dezembro 2013 e julho 2013 .


7
Btw, estamos usando o Django-rest-framework para um projeto importante, e é incrível! Eu testei a saborosa torta por uma semana no início e não me arrependo de ir com a DRF. Infelizmente, a documentação não está de acordo com o código e a estrutura em si, mas fora isso, pura felicidade.
22712 Ben Roberts

Ótimas coisas, obrigado Ben. E sim, seu ponto é. a documentação é definitivamente justa. Planejando resolver isso!
Tom Christie

O link de vídeo "minha conversa relâmpago do DjangoCon no django-rest-framework" está morto!
Mutant

1
@Mutant - Obrigado, o site djangocon.eu 2011 agora está morto, mas eu liguei diretamente para o vídeo em blip.tv.
9788 Tom Christie

@TomChristie O link para blip.tv está morto agora! Este é o vídeo correto?
Kevin

19

Ambos são boas escolhas.

Para filtros, o tastypie é mais poderoso e pronto para uso. Se você tem uma visão que expõe um modelo, pode fazer filtros de desigualdade no estilo Django:

http://www.example.com/api/person?age__gt=30

ou OU:

http://www.example.com/api/mymodel?language__in=en&language__in=fr

isso é possível com o djangorestframework, mas você precisa escrever filtros personalizados para cada modelo.

Para rastreamentos, fiquei mais impressionado com o django-rest-framework. Tastypie tenta enviar um email settings.ADMINScom exceções quando DEBUG = False. Quando DEBUG = True, a mensagem de erro padrão é JSON serializado , o que é mais difícil de ler.


8
Você não precisa escrever filtros personalizados para isso no Django REST Framework. Você só precisa usar o fornecido DjangoFilterBackendcomo documentado por quadro descansar aqui: django-rest-framework.org/api-guide/filtering#api-guide
monokrome

13

EDITAR Resposta desatualizada, tastypie não é mais mantida. Use a estrutura REST do Django se você precisar escolher uma estrutura para executar o REST.

Para uma visão geral das diferenças reais entre os dois, leia a documentação deles. Ambos são mais ou menos completos e bastante maduros.

Eu pessoalmente tendem a saborear torta embora. Parece ser mais fácil configurá-lo. É feito das mesmas pessoas que criaram o django-haystack, o que é incrível e, de acordo com o django-packages , é usado mais do que o framework Django REST.


2
A documentação não é uma boa "visão geral sobre as diferenças reais entre os dois".
monokrome

Eu -1 isso porque está desatualizado significativamente e agora existe um erro de fato: o DRF agora é muito mais usado que o TastyPie. Dito isto, o autor incluiu o link para django-packages, é uma resposta de alta qualidade.
texnic

1
Com base no histórico do Github e nos problemas resolvidos em 2018, parece que o TastyPie ainda é mantido.
Sushil

Tastypie é suportado para o django 1.11, isso é reconfortante para consideração de projetos futuros. django-tastypie.readthedocs.io/en/latest/…
elsadek

5

Vale a pena notar que desde que isso foi solicitado pela primeira vez, a DRF passou de força em força.

É o mais ativo dos dois no github (ambos em termos de commits, estrelas, garfos e colaboradores)

O DRF tem suporte ao OAuth 2 e a API navegável.

Honestamente, para mim, esse último recurso é o assassino. Ser capaz de apontar todos os meus desenvolvedores front-end para a API navegável quando eles não tiverem certeza de como algo funciona e dizer 'Vá em frente; descobrir 'é fantástico.

Não menos importante, porque significa que eles conseguem entendê-lo em seus próprios termos e sabem que a API realmente faz o que a 'documentação' realmente faz. No mundo da integração com APIs, esse fato por si só faz do DRF a estrutura a ser vencida.


Gostaria de saber se django-tastypie-swaggerfecha essa lacuna?
Victor Sergienko

2

Bem, Tastypie e DRF são excelentes opções. Você simplesmente não pode dar errado com nenhum deles. (Eu nunca trabalhei em Piston; e seu tipo de tendência não está mais nos dias de hoje, então não vou comentar). Na minha humilde opinião: A escolha deve ser feita nas suas habilidades (e na de sua equipe de tecnologia), conhecimentos e capacidades. Em vez de oferecer o TastyPie e o DRF, a menos que você esteja criando algo realmente grande como o Quora, o Facebook ou o Google.

Pessoalmente, acabei começando a trabalhar primeiro no TastyPie em uma época em que nem conhecia django corretamente. Tudo fazia sentido naquela época, conhecendo muito bem REST e HTTP, mas com quase nenhum ou pouco conhecimento sobre django. Porque minha única intenção era criar APIs RESTful em pouco tempo para serem consumidas em dispositivos móveis. Então, se você é como 'Eu por acaso me chamo django-new-bie', não pense que mais vale o TastyPie.

Mas se você tem muitos anos de experiência trabalhando com o Django, conhece tudo isso de maneira confortável e confortável usando conceitos avançados (como Class Based Views, Forms, Model Validator, QuerySet, Manager e Model Instances e como eles interagem entre si), * * vá para DRF. ** DFR é baseado nas visualizações baseadas em classe do django. DRF é django idiomático. É como se você estivesse escrevendo formulários de modelo, validadores etc. (Bem, o django idiomático não está nem perto do python idiomático. Se você é especialista em python, mas não tem experiência com o Django, pode estar tendo dificuldades inicialmente para se encaixar na filosofia do django idiomático e para também importa DRF). O DRF vem com muitos métodos mágicos embutidos, como o django. Se você ama os métodos mágicos e a filosofia do django, ** DRF ** é apenas para você.

Agora, apenas para responder à pergunta exata:

Tastypie:

Vantagens:

  1. Fácil de começar e fornecer funcionalidades básicas OOB (prontas para uso)
  2. Na maioria das vezes, você não estará lidando com conceitos avançados de Django, como CBVs, Forms etc.
  3. Código mais legível e menos mágica!
  4. Se seus modelos são NÃO ORM, vá em frente.

Desvantagens:

  1. Não segue rigorosamente o Django idiomático (lembre-se bem das filosofias de python e django são bem diferentes)
  2. Provavelmente um pouco difícil de personalizar APIs quando você cresce
  3. Nenhum O-Auth

DRF:

  1. Siga django idiomático. (Se você conhece django de dentro para fora e se sente muito à vontade com CBV, Forms etc, sem dúvida, vá em frente)
  2. Fornece funcionalidade REST pronta para uso usando ModelViewSets. Ao mesmo tempo, fornece maior controle para personalização usando CustomSerializer, APIView, GenericViews etc.
  3. Melhor autenticação. Mais fácil de escrever classes de permissão personalizadas. Trabalhe muito bem e, muito importante, muito fácil de fazê-lo funcionar com bibliotecas de terceiros e OAuth. DJANGO-REST-AUTH vale a pena mencionar BIBLIOTECA para Auth / SocialAuthentication / Registration. ( https://github.com/Tivix/django-rest-auth )

Desvantagens:

  1. Se você não conhece muito bem o Django, não faça isso.
  2. Magia! Algum tempo muito difícil de entender mágica. Porque foi escrito em cima do CBV do django, que por sua vez é bastante complexo por natureza. ( https://code.djangoproject.com/ticket/6735 )
  3. Possui curva de aprendizado acentuada.

Pessoalmente, o que eu usaria no meu próximo projeto?

  • Agora, não sou mais fã das funcionalidades MAGIC e Out-of-box. Porque todos eles têm um * ótimo custo. * Supondo que eu tenha todas as opções e controle sobre o tempo e o orçamento do projeto, eu começaria com algo leve como o RESTLess ( https://github.com/toastdriven/restless ) (criado pelo criador do TastyPie e do django-haystack ( http: //haystacksearch.org/ )). E para o mesmo assunto, provavelmente / definitivamente escolha a estrutura da Web leve como o Flask.

  • Mas por que? - Código python idiomático mais legível, simples e gerenciável (também conhecido como python). Embora mais código, mas eventualmente forneça grande flexibilidade e personalização.

    • Explícito é melhor que implícito.
    • Simples é melhor que complexo.
    • Complexo é melhor que complicado.
    • Flat é melhor que aninhado.
    • Esparso é melhor que denso.
    • Legibilidade conta.
    • Casos especiais não são especiais o suficiente para violar as regras.

E se você não tiver outra escolha senão o Django e um dos TastyPie e DRF?

  • Agora, conhecendo o Django razoavelmente bem, irei com ** DRF. **
  • Por quê? - djagno idiomático! (Eu não amo isso). Melhor integração OAuth e de terceiros (o django-rest-auth é o meu favorito).

Então, por que você escolheu o DRF / TastyPie em primeiro lugar?

  • Trabalhei principalmente com startups e pequenas empresas, que têm pouco orçamento e tempo; e precisa entregar algo rápido e utilizável. O Django serve muito bem a esse propósito. (Não estou dizendo que o django não é escalável. Existem sites como o Quora, Disquss, Youtube etc.). Mas tudo isso exige tempo e mais do que habilidades comuns.

Espero que ajude você a tomar uma decisão melhor.

Outras referências - 1. O estado de Tastypie ( http://toastdriven.com/blog/2014/may/23/state-tastypie/ ) 2. Quais são as diferenças entre django-tastypie e djangorestframework? ( Quais são as diferenças entre django-tastypie e djangorestframework? )


1

Tendo usado os dois, uma coisa que eu gostei (preferido) sobre o Django Rest Framwork é que é muito consistente com o Django.

Escrever serializadores de modelo é muito semelhante a escrever formulários de modelo. As visualizações genéricas incorporadas são muito semelhantes às visualizações genéricas do Django para HTML.


1

Django-tastypie não é mais mantido por seu criador original e ele criou um novo framework leve.

No momento, você deve usar o django-rest-framework com o django se estiver disposto a expor sua API.

Grandes empresas estão usando. O django-rest-framework é um membro central da equipe do django e ele recebe financiamento para manter o django-rest-framework.

O django-rest-framework também possui um grande número de pacotes de terceiros sempre crescentes, o que o ajudará a criar sua API mais facilmente com menos aborrecimentos.

Alguma parte do drf também será mesclada no django propriamente dito.

O drf fornece mais padrões e ferramentas melhores que o django-tastypie.

Em suma, é bem projetado, bem conservado, financiado, fornece aplicativos de terceiros enormes, confiáveis ​​por grandes organizações, mais fáceis e menos padronizados, etc.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.