Por que você usaria um sobre o outro para expor uma API para seu aplicativo Django?
Por que você usaria um sobre o outro para expor uma API para seu aplicativo Django?
Respostas:
Como autor do django-rest-framework, eu tenho um viés óbvio;) mas minha opinião esperançosamente razoavelmente objetiva sobre isso é algo como:
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 .
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.ADMINS
com exceções quando DEBUG = False
. Quando DEBUG = True
, a mensagem de erro padrão é JSON serializado , o que é mais difícil de ler.
DjangoFilterBackend
como documentado por quadro descansar aqui: django-rest-framework.org/api-guide/filtering#api-guide
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.
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.
django-tastypie-swagger
fecha essa lacuna?
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:
Desvantagens:
DRF:
Desvantagens:
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.
E se você não tiver outra escolha senão o Django e um dos TastyPie e DRF?
Então, por que você escolheu o DRF / TastyPie em primeiro lugar?
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? )
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.
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.