搜尋

首頁  >  問答  >  主體

python - django 编写接口的问题

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

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

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

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

为什么要用rest呢。

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

阿神阿神2889 天前478

全部回覆(2)我來回復

  • 高洛峰

    高洛峰2017-04-17 17:35:48

    用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. Serialsizer invideizer provids configed 片段, conars 格式. Serial constal, ​​nected sexs. 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...),但我們永遠無法忘記他和他的團隊為開發者帶來的便利。

    回覆
    0
  • 黄舟

    黄舟2017-04-17 17:35:48

    我們的做法是寫一個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都是你需要去實現的,這裡只是簡單的偽代碼。

    回覆
    0
  • 取消回覆