关于REST的专业人士和骗局的辩论。 我个人在我的项目中并不需要它,这个主题不是要争论我实际上需要它的事实^^
请注意,我在" REST模式下使用Tastypie"并决定切换到非REST模式,因为我的应用程序根本不是基于CRUD的。我的API是应用程序API ,而不是用户 API。就我而言,使用REST迫使我做肮脏和愚蠢的事情。
在我的项目中,我想做的事情可以更简单:
我唯一需要的是:
侵入式API的内容我不需要(但我非常不得不在REST模式下使用它):
那么,如何以简单的方式创建这个非REST API?使用哪个框架? 非常感谢。
答案 0 :(得分:1)
我的项目中使用了方法。 您必须定义基础资源:
class BaseResource(object):
__METHODS = {
'GET': 'get',
'POST': 'post',
}
def __init__(self, methods):
# here you look what allowed methods are in class init
# and add it to self.methods
def _process_body(self, request):
request.data = None # here you will handle request and put json into variable
def __call__(self, request, **kwargs):
# here you look which method of view you must call
if not request.method in self.methods:
return HttpResponseNotAllowed(self.methods)
attr = self.methods[request.method]
func = getattr(self, attr, None)
self._process_body(request)
response = func(request, **kwargs)
# here you can return response
您的观点可能如下所示:
class SuppaView(BaseResource):
def post(self, request):
...
然后在网址中:
url('^your-cool-resource/$', views.SuppaView(methods=['POST'])),
您可以根据需要添加授权等来装饰类方法。
答案 1 :(得分:1)
我自己回答了这个问题:
我刚刚发现Tastypie的创建者创建了第二个名为Restless的Python API框架。 尽管这个名称,它仍然是一个Restfull框架,但其理念与前一个框架截然不同。
在建立Tastypie时,我试图创造出非常完整的东西。全面。结果是写了很多钩子方法(为了方便扩展性)&当我试图以灵活/可覆盖的方式容纳人们可能想要/需要的一切时,很多(感知的)臃肿。但实际上,我真正想要的只是RESTful动词,JSON序列化和覆盖行为的能力。
此框架允许您对每种REST方法的行为进行硬编码(谢谢!!!!)。
现在唯一的事情就是试图绕过" REST行为"以优雅的方式...