你可能不知道的 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