django 编写接口的问题

发布于 2022-09-02 12:58:15 字数 262 浏览 10 评论 0

最近做一个django的项目,和其他项目做对接,接口化。

有些事情不明,
1、用django,写url,views这种方式写接口,行吗。

2、django中有rest_framework 这种rest接口的形式,我粗略看了下,不太明白serializers这个什么作用

3、django原声写url,views的方式去写接口,和用rest_framework有什么区别。

为什么要用rest呢。

小白,sorry,望大神回答疑惑。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

难如初 2022-09-09 12:58:15

用django,写url,views这种方式写接口,行吗。

行。因为所谓接口也是普通的URL。


django中有rest_framework 这种rest接口的形式,我粗略看了下,不太明白serializers这个什么作用

见官网的解释:

Serializers allow complex data such as querysets and model instances to be converted to native Python datatypes that can then be easily rendered into JSON, XML or other content types. Serializers also provide deserialization, allowing parsed data to be converted back into complex types, after first validating the incoming data. -- via http://www.django-rest-framework.org/api...

在后台,我们使用 ORM 处理数据。为了方便业务逻辑的表达,此时的数据是以 Python 对象的形式存在。但在前后端交流的过程中,原生对象是不允许被传输的,所有的数据都需要转化为纯字符格式,如 XML、JSON。这里就涉及到一个 Python 对象 与 字符流 相互转化的问题。而 Serializers 就是沟通它们的桥梁。


django原声写url,views的方式去写接口,和用rest_framework有什么区别。

没有区别。但 rest-framework 为你封装好了一大堆功能,开箱即用,能使你的代码显得更加简洁。这一点在接口数目特别多的时候尤为明显。


为什么要用rest呢。

参考 http://stackoverflow.com/questions/53200...


此外,向 DRF 的作者致敬。尽管他已经不再跟进这个项目了(http://www.django-rest-framework.org/top...),但我们永远都无法忘记他和他的团队给开发者带来的便利。

我早已燃尽 2022-09-09 12:58:15

我们的做法是写一个api的装饰器,然后用来注解View上的方法,方法返回dict或者直接抛出异常。这样可以把权限控制也放到装饰器上面去,最后实际的API就只需要这样写:

class ApiView(BaseApiView):
    @api
    def login(username,password):
        pass
    @api
    def register(phone,password,email):
        pass
    @asapi(role="admin")
    def sysinfo():
        pass

代码里面的BaseApiView和api都是你需要去实现的,这里只是简单的伪代码。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文