1. 程式人生 > 其它 >你可能不知道的 Django Rest Framework 的兩個新特性

你可能不知道的 Django Rest Framework 的兩個新特性

前端、甚至大前端發展如此火爆的 2017 年(我相信 2018 年一樣)剛過去,像 MVC 架構那樣直接使用後端模板渲染前端頁面的方式已經不被推崇了(當然有些場景下還是蠻適合的),互動的體驗和難度都已經和 MVVM 架構的 Front-End 相差了 108000 Km -- 使用者體驗差,開發難度還高。現在是 VueJS / ReactJS / AngularJS 與使用 JSON 格式的 Back-End 交換資料的世界。作為一個 Django 使用者,DRF(Django Rest Framework,後面使用簡稱)也理所當然的變成 Django 開發者必學的一個 Package。


這篇文章我簡單介紹一下 DRF 3.6 的兩個新特性

1. 內建互動式API文件支援(Built-in interactive API documentation support)

新的 DRF API 互動式文件支援許多功能:

  • 實時 API 互動。
  • 支援各種認證方案。
  • Python,JavaScript 和 Command Line 客戶端的程式碼片段。

依賴或可選的 Package:

  • coreapi Package 是本特性的依賴項,確保安裝最新版本哦(2.3.0 或更高版本)
  • pygments Package 程式設計程式碼高亮(可選)
  • markdown Package markdown 語法高亮(可選)

要生效 API 互動文件特性,您僅需要這樣將其包含在專案 URLconf 中:

from rest_framework.documentation import include_docs_urls

API_TITLE = 'API title'
API_DESCRIPTION = '...'

urlpatterns = [
    ...
    url(r'^docs/', include_docs_urls(title=API_TITLE,
                                     description=API_DESCRIPTION))]

2. 一個新的 JS 客戶端庫(A new JavaScript client library)

新的 JavaScript 客戶端庫允許您載入一種新的 API 模式,在應用程式層介面與該 API 互動,而不是顯式構建提取請求(比如使用 axios 等前端類庫)

下面是一個簡短的例子,它演示了:

  • 載入客戶端庫和模式。
  • 例項化已認證的客戶端。
  • 使用客戶端進行 API 請求。
<html>
  <head>
    <script src="/static/rest_framework/js/coreapi-0.1.0.js"></script>
    <script src="/docs/schema.js"></script>
    <script>
        const coreapi = window.coreapi
        const schema = window.schema
        // Instantiate a client...
        let auth = coreapi.auth.TokenAuthentication({scheme: 'JWT', token: 'xxx'})
        let client = coreapi.Client({auth: auth})
        // Make an API request...
        client.action(schema, ['projects', 'list']).then(function(result) {
            alert(result)
        })
    </script>
  </head>
</html>

JavaScript 客戶端庫支援各種身份驗證方案,可以由您的專案本身使用,也可以作為與 API 進行互動的外部客戶端使用。

客戶端不限於使用 REST 框架 API,儘管目前只支援載入 CoreJSON API 模式。後續將會計劃支援 Swagger 和其他 API 模式。

有關更多詳細資訊,請參閱:

http://www.django-rest-framework.org/topics/api-clients/#javascript-client-library