我是新鲜的美味派,我试图简单地从我的API返回一个json结构。
我有以下课程:
class CaseResource(Resource):
class Meta:
authentication = SessionAuthentication()
resource_name = 'case'
allowed_methods = ['get']
def obj_get_list(self, request, **kwargs):
case = request.GET.get('q')
if case:
mycase = connect_and_retrieve_data(request, q)
return self.create_response(request, {'mycase': mycase})
connect_and_retrieve_data是一个为非ORM对象返回json_dump的方法。
当我在AJAX中发送GET请求时,我收到了以下响应:
NotImplementedError at /mydashboard/api/v1/case/
No exception message supplied
API指向我"使用Tastypie和非ORM数据源",虽然我希望有一些不那么重的东西。
我想我必须覆盖所有方法:
但这看起来很重。还有其他方法可以做到这一点或使用不同的方法吗?
提前感谢您的帮助,
答案 0 :(得分:0)
对于单个请求,您可以不创建任何RESTful端点。如果您因某种原因决定您的整个服务将是100%RESTful,那么这将是不对的。
但是,如果你正在寻找不那么重要的东西,请尝试标准的Django视图:
import json
from django.http import (HttpResponse,
HttpResponseNotAllowed, HttpResponseForbidden)
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def connect_and_retrieve_data(request):
"""
Docstrings..
"""
if not request.user.is_authenticated():
return HttpResponseForbidden(json.dumps({'message': 'User must be authenticated'}),
content_type='application/json')
if request.method != 'GET':
return HttpResponseNotAllowed(permitted_methods=('GET',))
if request.GET.get('q'):
mycase = connect_and_retrieve_data(request, request.GET.get('q'))
mycase = json.loads(mycase)
return HttpResponse(
json.dumps({'mycase': mycase, 'success': True}),
content_type='application/json')
else:
return HttpResponse(
json.dumps({'message': 'Missing q param', 'success': False}),
content_type='application/json')
请注意,如果在RESTful API中获得太多这样的未记录和未经测试的端点,您的项目可能会很快失控。在某些时候,你可能会考虑其他一些东西然后RESTful。但是,如果它不超过所有端点的10%,并且很好地描述了你会没事的。