Python中的简单RESTFUL客户端/服务器示例?
有没有什么在线资源可以教我怎么用Python写一个简单但又稳健的RESTFUL服务器/客户端(最好带有身份验证)呢?
我的目标是能够自己写轻量级的RESTFUL服务,而不想被整个网络框架束缚住。话说回来,如果有办法用Django轻松地写RESTFUL服务,我也很感兴趣。
其实,仔细想想,我甚至可能更喜欢基于Django的解决方案(前提是它足够轻量,不会把整个框架都带进来),因为这样我可以只使用我需要的部分,从而实现更好的安全性和对服务的访问控制。
2 个回答
2
这个看起来很不错。http://parand.com/say/index.php/2009/04/30/django-piston-rest-framework-for-django/ 我之前用过,感觉挺好用的。不过,最近好像没有人维护了。
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)
...
……等等。
重要的是你的服务是如何向用户展示的,而不是它使用的库、工具或框架。