我想制作一个基于Tastypie的API加法器。以下是它的工作原理...用户会发布他们想要添加的两个数字并使用Tastypie + Django我想在返回给用户时添加添加的数字。
我没兴趣将它放入mySQL数据库。
class Adder(resource):
class Meta:
authorization = Authorization()
authentication = Authentication()
def hydrate(self,bundle):
_a = bundle.data['first_number']
_b = bundle.data['second_number']
self.create_response(request, return_dict)
return bundle
Tastypie的文档似乎真的围绕模型(出于显而易见的原因)。
但我很好奇是否可以在水合物方法中调用create_response,并且调用水合物方法是处理后期数据的正确方法。
答案 0 :(得分:2)
我可能会跳过像hydrate,apply_sorting,build_filters等更细粒度的东西。
我假设没有api背后的对象你正在使用像/api/v1/add_stuff/
这样的列表式网址,并假设你正在接受POST请求。如果这些假设是错误的,您可以通过更改为post_detail,get_list等进行调整。
def post_list(self, request, **kwargs):
_a = request.POST.get('first_number', None)
_b = request.POST.get('second_number', None)
if None in (_a, _b):
raise HttpBadRequest()
return self.create_response(request, {'result': _a + _b})
请注意,我认为这段代码可行,但我还没有测试过。这是为了提供一个起点。
This section of the Tastypie docs描述了调用各种方法的顺序,并且在页面底部有一个完整的API引用,因此您可以看到事物期望的参数以及它们应该返回的内容。
编辑:
这种情况的流程看起来像这样:
在dispatch
中,检查请求uri。取决于是否
请求详细信息或列表uri(/api/v1/add_stuff/<pk>/
或
/api/v1/add_stuff/
),处理委托给dispatch_detail
或。{
dispatch_list
。这也是身份验证,授权,
和限制检查发生。
在dispatch_list
中,检查请求方法并调用
委托给名为'%s_list' % request.METHOD.lower()
的方法。
要回答您的评论,这些是神奇的方法名称。如果
请求方法是POST,dispatch_list
查找名为的方法
post_list
如果适当的处理程序,则抛出错误
未定义。