天天看點

用 Flask 來寫個輕部落格 (34) — 使用 Flask-RESTful 來建構 RESTful API 之三目錄前文清單應用請求中的參數實作 API 分頁測試

<a href="#%E7%9B%AE%E5%BD%95">目錄</a>

<a href="#%E5%89%8D%E6%96%87%E5%88%97%E8%A1%A8">前文清單</a>

<a href="#%E5%BA%94%E7%94%A8%E8%AF%B7%E6%B1%82%E4%B8%AD%E7%9A%84%E5%8F%82%E6%95%B0%E5%AE%9E%E7%8E%B0-api-%E5%88%86%E9%A1%B5">應用請求中的參數實作 API 分頁</a>

<a href="#%E6%B5%8B%E8%AF%95">測試</a>

<a href="http://blog.csdn.net/jmilk/article/details/53150084">用 Flask 來寫個輕部落格 (1) — 建立項目</a>

<a href="http://blog.csdn.net/jmilk/article/details/53152158">用 Flask 來寫個輕部落格 (2) — Hello World!</a>

<a href="http://blog.csdn.net/jmilk/article/details/53153382">用 Flask 來寫個輕部落格 (3) — (M)VC_連接配接 MySQL 和 SQLAlchemy</a>

<a href="http://blog.csdn.net/jmilk/article/details/53184903">用 Flask 來寫個輕部落格 (4) — (M)VC_建立資料模型和表</a>

<a href="http://blog.csdn.net/jmilk/article/details/53187575">用 Flask 來寫個輕部落格 (5) — (M)VC_SQLAlchemy 的 CRUD 詳解</a>

<a href="http://blog.csdn.net/jmilk/article/details/53229180">用 Flask 來寫個輕部落格 (6) — (M)VC_models 的關系(one to many)</a>

<a href="http://blog.csdn.net/jmilk/article/details/53239740">用 Flask 來寫個輕部落格 (7) — (M)VC_models 的關系(many to many)</a>

<a href="http://blog.csdn.net/jmilk/article/details/53241361">用 Flask 來寫個輕部落格 (8) — (M)VC_Alembic 管理資料庫結構的更新和降級</a>

<a href="http://blog.csdn.net/jmilk/article/details/53264049">用 Flask 來寫個輕部落格 (9) — M(V)C_Jinja 文法基礎快速概覽</a>

<a href="http://blog.csdn.net/jmilk/article/details/53292248">用 Flask 來寫個輕部落格 (10) — M(V)C_Jinja 常用過濾器與 Flask 特殊變量及方法</a>

<a href="http://blog.csdn.net/jmilk/article/details/53303870">用 Flask 來寫個輕部落格 (11) — M(V)C_建立視圖函數</a>

<a href="http://blog.csdn.net/jmilk/article/details/53306560">用 Flask 來寫個輕部落格 (12) — M(V)C_編寫和繼承 Jinja 模闆</a>

<a href="http://blog.csdn.net/jmilk/article/details/53321939">用 Flask 來寫個輕部落格 (13) — M(V)C_WTForms 服務端表單檢驗</a>

<a href="http://blog.csdn.net/jmilk/article/details/53327164">用 Flask 來寫個輕部落格 (14) — M(V)C_實作項目首頁的模闆</a>

<a href="http://blog.csdn.net/jmilk/article/details/53332204">用 Flask 來寫個輕部落格 (15) — M(V)C_實作博文頁面評論表單</a>

<a href="http://blog.csdn.net/jmilk/article/details/53342517">用 Flask 來寫個輕部落格 (16) — MV(C)_Flask Blueprint 藍圖</a>

<a href="http://blog.csdn.net/jmilk/article/details/53352359">用 Flask 來寫個輕部落格 (17) — MV(C)_應用藍圖來重構項目</a>

<a href="http://blog.csdn.net/jmilk/article/details/53363109">用 Flask 來寫個輕部落格 (18) — 使用工廠模式來生成應用對象</a>

<a href="http://blog.csdn.net/jmilk/article/details/53365714">用 Flask 來寫個輕部落格 (19) — 以 Bcrypt 密文存儲賬戶資訊與實作使用者登陸表單</a>

<a href="http://blog.csdn.net/jmilk/article/details/53368626">用 Flask 來寫個輕部落格 (20) — 實作系統資料庫單與應用 reCAPTCHA 來實作驗證碼</a>

<a href="http://blog.csdn.net/jmilk/article/details/53385381">用 Flask 來寫個輕部落格 (21) — 結合 reCAPTCHA 驗證碼實作使用者注冊與登入</a>

<a href="http://blog.csdn.net/jmilk/article/details/53445271">用 Flask 來寫個輕部落格 (22) — 實作部落格文章的添加和編輯頁面</a>

<a href="http://blog.csdn.net/jmilk/article/details/53448906">用 Flask 來寫個輕部落格 (23) — 應用 OAuth 來實作 Facebook 第三方登入</a>

<a href="http://blog.csdn.net/jmilk/article/details/53539710">用 Flask 來寫個輕部落格 (24) — 使用 Flask-Login 來保護應用安全</a>

<a href="http://blog.csdn.net/jmilk/article/details/53542686">用 Flask 來寫個輕部落格 (25) — 使用 Flask-Principal 實作角色權限功能</a>

<a href="http://blog.csdn.net/jmilk/article/details/53677411">用 Flask 來寫個輕部落格 (26) — 使用 Flask-Celery-Helper 實作異步任務</a>

<a href="http://blog.csdn.net/jmilk/article/details/53741676">用 Flask 來寫個輕部落格 (27) — 使用 Flask-Cache 實作網頁緩存加速</a>

<a href="http://blog.csdn.net/Jmilk/article/details/53782360">用 Flask 來寫個輕部落格 (29) — 使用 Flask-Admin 實作背景管理 SQLAlchemy</a>

<a href="http://blog.csdn.net/jmilk/article/details/53782865">用 Flask 來寫個輕部落格 (30) — 使用 Flask-Admin 增強文章管理功能</a>

<a href="http://blog.csdn.net/jmilk/article/details/53970235">用 Flask 來寫個輕部落格 (31) — 使用 Flask-Admin 實作 FileSystem 管理</a>

<a href="http://blog.csdn.net/Jmilk/article/details/53973314">用 Flask 來寫個輕部落格 (32) — 使用 Flask-RESTful 來建構 RESTful API 之一</a>

<a href="http://blog.csdn.net/Jmilk/article/details/53979349">用 Flask 來寫個輕部落格 (33) — 使用 Flask-RESTful 來建構 RESTful API 之二</a>

API 也需要實作分頁功能, 以此降低 API 對資料庫的壓力.

Flask-RESTful 提供了一種叫做解析器的功能, 用于查找和解析請求中所攜帶的參數. 而且還可以規定必備的參數和類型.

實作解析器子產品

vim jmilkfansblog/controllers/flask_restful/parsers.py

NOTE 1: 命名規則為 <code>resourceName_functionName_parser</code>

NOTE 2: add_argument() 函數的參數清單:

(1). <code>page</code> 定義參數名稱

(2). <code>type=int</code> 定義參數類型

(3). <code>location=['json', 'args', 'headers']</code> 搜尋參數的位置清單

(4). <code>required=False</code> 是否為必須的參數

除此之外, 還能夠定義非常多的關鍵字參數, 具體請參照官方文檔.

NOTE 3: 可以定義多個參數

應用自定義的解析器

直接應用到資源類的執行個體方法中

vim jmilkfansblog/controllers/flask_restful/posts.py

分頁的原理在之前的博文中已經介紹過了, 這裡不在重複.

NOTE 1: 這裡實作了解析器 reqparse 從 URL 參數或者 HTTP Header 中找到 user/page 參數, 并傳回對應的 Model 分頁對象.

使用 curl 工具進行測試, 根據個人環境可能需要安裝.

擷取所有 posts

擷取單一 post

傳入正确的參數

傳入錯誤的參數