[英]How to develop a rest api without using serializer in Django Rest Framework?
[英]How to build a json REST API in django (without Django REST framework)
我有一个 Django 项目。 我已经把它连接起来,所以它为一堆模型提供了一堆视图。 现在我想添加一个端点,它只是将数据库的很大一部分转储为 json。
我假设你这样做的方法是向视图类/方法添加一个 URL,它返回一个充满 json 的 HTTPResponseObject。 不幸的是,经过相当多的谷歌搜索后,我只能找到对Django REST framework 的引用。 这是你认为 Django 会在内部提供而不是作为外部插件库的一部分的那种东西。 但是搜索 django 文档并没有立即得到答案——我认为没有关于如何构建一个只提供一堆 json 的端点的文档。
经过更多的谷歌搜索,我在 Django 文档中找到了我想要的东西: JsonResponse
from django.http import JsonResponse
return JsonResponse({'foo':'bar'})
我认为使用“REST”这个词在谷歌上搜索是一种红鲱鱼,这使得搜索空间总是将我的查询导向“Django REST framework”,这不是我想要的,尽管我确实想添加一个 RESTful API。
您可以使用此方法编写 GET API,但对于 POST 方法,这不起作用。 对于 Post 方法,我们需要使用一些 REST 库。
POST 方法将检查 cookie 中的 CSRF 令牌以及它无法执行请求的位置,因为您的 django 服务器会将此请求视为伪造的。
你应该使用 Django Rest Framework 但如果你想自己做,那么:
import json
def add_new_user(self, request):
data = request.body.decode('utf8')
data = json.loads(data)
如果发送纯名称/值对,则使用 request.POST 或 request.GET
使用 JsonResponse 发送响应
认证后,服务器通常会向客户端发送一个令牌。 然后,客户端在向“受保护”api 端点发送请求时发送该令牌。 自定义标头(如 auth_token)用于发送令牌。
在服务器代码中,您需要执行诸如 request.META['HTTP_AUTH_TOKEN'] 之类的操作来获取令牌(请参阅Django 中的自定义 HTTP 标头)
还有更多的事情需要考虑,比如 CSRF 令牌或 JWT。
请参阅此站点以获取完整示例https://jee-appy.blogspot.com/2018/02/make-rest-api-django.html 。 请注意,它使用旧版本的 django。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.