使用 Flask 实现 RESTful API

简介

首先,安装Flask

1 pip install flask

假设那你已经了解RESTful API的相关概念,如果不清楚,可以阅读我之前写的这篇博客Designing a RESTful Web API.

Flask是一个使用Python开发的基于Werkzeug的Web框架。
Flask非常适合于开发RESTful API,因为它具有以下特点:

  • 使用Python进行开发,Python简洁易懂
  • 容易上手
  • 灵活
  • 可以部署到不同的环境
  • 支持RESTful请求分发

我一般是用curl命令进行测试,除此之外,还可以使用Chrome浏览器的postman扩展。

资源

首先,我创建一个完整的应用,支持响应/, /articles以及/article/:id。

1234567891011121314151617 from flask import Flask, url_forapp = Flask(__name__) @app.route(\’/\’)def api_root():    return \’Welcome\’ @app.route(\’/articles\’)def api_articles():    return \’List of \’ + url_for(\’api_articles\’) @app.route(\’/articles/<articleid>\’)def api_article(articleid):    return \’You are reading \’ + articleid if __name__ == \’__main__\’:    app.run()

可以使用curl命令发送请求:

1 curl http://127.0.0.1:5000/

响应结果分别如下所示:

12345678 GET /Welcome GET /articlesList of /articles GET /articles/123You are reading 123

路由中还可以使用类型定义:

1 @app.route(\’/articles/<articleid>\’)

上面的路由可以替换成下面的例子:

123 @app.route(\’/articles/<int:articleid>\’)@app.route(\’/articles/<float:articleid>\’)@app.route(\’/articles/<path:articleid>\’)

默认的类型为字符串。

请求REQUESTS

请求参数

假设需要响应一个/hello请求,使用get方法,并传递参数name

12345678 from flask import request @app.route(\’/hello\’)def api_hello():    if \’name\’ in request.args:        return \’Hello \’ + request.args[\’name\’]    else:        return \’Hello John Doe\’

服务器会返回如下响应信息:

1e\” data-settings=\” minimize scroll-always\” style=\” margin-top: 12px; margin-bottom: 12px; font-size: 13px !important; line-height: 15px !important;\”>

1 pip install flask

假设那你已经了解RESTful API的相关概念,如果不清楚,可以阅读我之前写的这篇博客Designing a RESTful Web API.

Flask是一个使用Python开发的基于Werkzeug的Web框架。
Flask非常适合于开发RESTful API,因为它具有以下特点:

  • 使用Python进行开发,Python简洁易懂
  • 容易上手
  • 灵活
  • 可以部署到不同的环境
  • 支持RESTful请求分发

我一般是用curl命令进行测试,除此之外,还可以使用Chrome浏览器的postman扩展。

资源

首先,我创建一个完整的应用,支持响应/, /articles以及/article/:id。

1234567891011121314151617 from flask import Flask, url_forapp = Flask(__name__) @app.route(\’/\’)def api_root():    return \’Welcome\’ @app.route(\’/articles\’)def api_articles():    return \’List of \’ + url_for(\’api_articles\’) @app.route(\’/articles/<articleid>\’)def api_article(articleid):    return \’You are reading \’ + articleid if __name__ == \’__main__\’:    app.run()

可以使用curl命令发送请求:

1 curl http://127.0.0.1:5000/

响应结果分别如下所示:

12345678 GET /Welcome GET /articlesList of /articles GET /articles/123You are reading 123

路由中还可以使用类型定义:

1 @app.route(\’/articles/<articleid>\’)

上面的路由可以替换成下面的例子:

123 @app.route(\’/articles/<int:articleid>\’)@app.route(\’/articles/<float:articleid>\’)@app.route(\’/articles/<path:articleid>\’)

默认的类型为字符串。

请求REQUESTS

请求参数

假设需要响应一个/hello请求,使用get方法,并传递参数name

12345678 from flask import request @app.route(\’/hello\’)def api_hello():    if \’name\’ in request.args:        return \’Hello \’ + request.args[\’name\’]    else:        return \’Hello John Doe\’

服务器会返回如下响应信息:

1 !– BEGIN .post-meta –>
div class=\”post-meta no-thumb\”>

p>