Adicionando REST para Django

votos
50

Eu tenho um aplicativo de Django que funciona muito bem. Eu estou adicionando serviços REST. Estou procurando alguma entrada adicional sobre a minha estratégia REST.

Aqui estão alguns exemplos de coisas que eu estou torcendo minhas mãos sobre.

  • Agora, eu estou usando a API Django-descanso com uma pilha de patches.
  • Estou pensando em cair para simplesmente escrever vista funções em Django que retornam resultados JSON.
  • Eu também posso ver filtrar os pedidos REST no Apache e roteamento-los para uma instância do servidor separado, não Django.

Por favor, indicar uma abordagem por resposta para que possamos votá-los para cima ou para baixo.

Publicado 21/11/2008 em 13:24
fonte usuário
Em outras línguas...                            


11 respostas

votos
59

Estou pensando em cair para simplesmente escrever vista funções em Django que retornam resultados JSON.

  • Explícito
  • Portátil para outros frameworks
  • Não requer patch Django
Respondeu 21/11/2008 em 14:38
fonte usuário

votos
30

Por favor, note que o descanso não significa apenas resultados JSON. RESTO essencialmente significa expor uma API orientada a recurso sobre HTTP nativa, mas de pleno direito. Eu não sou um especialista em REST, mas aqui estão algumas das coisas que Rails está fazendo.

  • URLs devem ser bons nomes, simples de recursos
  • Use os métodos HTTP direita
    • HEAD, GET, POST, PUT e DELETE
    • Opcionalmente com uma substituição ( '_method' parâmetro de formulário irá sobrepor-pedido método HTTP)
  • Apoio do tipo de conteúdo negociação via Aceitar de cabeçalho de solicitação
    • Opcionalmente, com uma substituição de (extensão de nome de ficheiro no URL irão sobrepor MIME-tipo no pedido-cabeçalho Accept)
    • tipos de conteúdo disponíveis deve incluir XML, XHTML, HTML, JSON, YAML, e muitos outros, conforme apropriado

Por exemplo, para obter o apoio de HTTP nativo indo, o servidor deve responder a

GET /account/profile HTTP/1.1
Host: example.com
Accept: application/json

como ele iria responder a

GET /account/profile.json HTTP/1.1
Host: example.com

E ele deve responder a

PUT /account/profile HTTP/1.1
Host: example.com

var=value

como ele iria responder a

POST /account/profile HTTP/1.1
Host: example.com

_method=PUT&var=value
Respondeu 02/10/2009 em 16:03
fonte usuário

votos
25

Para qualquer outra pessoa procurando, um aplicativo de API pluggable muito decente para Django, fazer de certeza que você check-out jespern django-pistão que é usado internamente na BitBucket.

É bem conservado, tem um grande número de seguidores e alguns garfos legais que fazer coisas como adicionar suporte para paginação e outros métodos de autenticação (OAuth é apoiado fora da caixa).

Atualizado para refletir que django-pistão já não é mantida.

Respondeu 29/03/2010 em 23:23
fonte usuário

votos
7

Tastypie é também um quadro RESTO emergente para Django. Ele tem a mesma mentalidade como pistões, e remove um monte de codificação clichê.

Respondeu 05/12/2011 em 13:54
fonte usuário

votos
5

Minha resposta para a mesma pergunta aqui: Quadro para o serviço web Implementação REST Django

A versão curta é, ter um olhar para https://github.com/jgorset/django-respite/ um quadro RESTO em seus primeiros dias, mas podemos usá-lo todos os dias em projetos de clientes.

Respondeu 06/07/2011 em 16:27
fonte usuário

votos
4

Sucata do api Django REST e vir acima com seu próprio projeto de código aberto que outros possam contribuir. Eu estaria disposto a contribuir. Eu tenho algum código que se baseia a API formas de fazer REST.

Respondeu 21/11/2008 em 15:07
fonte usuário

votos
3

Estou pensando em cair para simplesmente escrever vista funções em Django que retornam resultados JSON.

Eu iria com isso ..
Ali Um resumiu tudo muito bem.

O ponto principal para mim é beign explícito. Gostaria de evitar o uso de uma função que converte automaticamente um objeto em JSON, que se o objeto tem uma referência a um usuário e de alguma forma a senha (mesmo que seja hash) ir para o snippit json?

Respondeu 23/11/2008 em 15:01
fonte usuário

votos
2

Você poderia tomar olhada django-dynamicresponse , que é uma estrutura leve para a adição de API REST com JSON para suas aplicações Django.

Ela exige alterações mínimas para adicionar suporte API para aplicativos Django existentes, e torna mais simples e direta para construir-in API desde o início em novos projetos.

Basicamente, ele inclui suporte middleware para analisar JSON em request.POST, além de serialização contexto voltou para JSON ou tornando um modelo / redirecionamento condicionalmente com base no tipo do pedido.

Respondeu 21/10/2010 em 15:01
fonte usuário

votos
2

Eu acabei indo com a minha própria estrutura de API REST para Django (que eu adoraria se livrar de se eu posso encontrar uma alternativa viável), com algumas exibições personalizadas jogado em casos de canto que eu não queria lidar com eles. Tem funcionado bem.

Assim, uma combinação de 1 e 2; sem alguma forma de quadro que você vai acabar escrevendo o mesmo clichê para os casos comuns.

Também fiz algumas APIs stand-alone. Eu gosto de tê-los como serviços autônomos, mas o próprio fato de que elas estão sozinhas do resto do código leva a eles serem negligenciados. Não há razão técnica; simplesmente out-of-sight, out-of-mind.

O que eu realmente gostaria de ver é uma abordagem que unifica formas Django e REST APIs, já que muitas vezes compartilhar muita lógica. Conceitualmente se o seu aplicativo expõe algo em HTML ele provavelmente quer expô-lo por meio de programação também.

Respondeu 23/11/2008 em 21:26
fonte usuário

votos
1

TastyPie parece bastante interessante e promissor. Vai bem com Django.

Respondeu 27/01/2012 em 02:17
fonte usuário

votos
1

você pode tentar fazer uma série de funções genéricas que processam os dados (como Paraná mencionado), que você pode chamar de uma vista que geram as páginas da web, bem como aqueles que geram o json / xml / whatever

Respondeu 10/04/2009 em 02:09
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more