是否有在线资源显示如何编写一个简单(但功能强大)的RESTFUL服务器/客户端(最好带有身份验证),用Python编写?
目标是能够编写自己的轻量级RESTFUL服务,而不受整个Web框架的阻碍。话虽如此,如果有一种方法可以使用Django以轻量级方式执行此操作(即编写RESFUL服务),我也会同样感兴趣。
实际上,为了解决这个问题,我甚至可以选择基于Django的解决方案(提供足够轻量级的解决方案 - 即不会使整个框架发挥作用),因为我将只能利用我需要的组件,以实现更好的安全性/访问服务。
答案 0 :(得分:5)
好吧,首先你可以使用django-piston,就像@Tudorizer已经提到的那样。
然而再次,正如我所看到的那样(我可能错了!),REST更多的是一套设计指南,而不是具体的API。它本质上说的是与您的服务的交互不应该基于“您可以做的事情”(典型的RPC风格的方法),而是“事物,您可以以可预测的方式采取行动,以某种方式组织”( '资源'实体和http动词)。
话虽这么说,使用django编写REST样式的服务并不需要额外的任何东西。
请考虑以下事项:
# urlconf
from django.conf.urls.defaults import patterns, url
urlpatterns = patterns('',
url(r'^tickets$', 'myapp.views.tickets', name='tickets'),
url(r'^ticket/(?P<id>\d+)$', 'myapp.views.tickets', name='ticket'),
url(r'^ticket$', 'myapp.views.tickets', name='ticket'),
)
# views
def tickets(request):
tickets = Ticket.objects.all()
return render_to_response('tickets.html', {'tickets':tickets})
def ticket(request, id=None):
if id is not None:
ticket = get_object_or_404(Ticket, id=id)
if request.method == 'POST':
# create or update ticket here
else:
# just render the ticket (GET)
...
......等等。
重要的是您的服务如何向其用户公开,而不是它所使用的库/工具包/框架。
答案 1 :(得分:2)
这个看起来很有希望。 http://parand.com/say/index.php/2009/04/30/django-piston-rest-framework-for-django/我以前用过它,非常漂亮。话虽如此,最近似乎没有保持。