用 Python 编写 Restful API

前言

用 Python 构建 API 是一项非常简单的任务。本教程将帮助您使用 Flask 框架在 Python 中编写基本的 REST API

REST API 几乎无处不在。它们是向客户端展示数据的标准方法,了解如何开发 REST API 对于所有开发人员都是必要的

有很多理由需要学习使用 Python 开发 REST api。如果您是 API 开发的新手,那么学习如何开发 REST API 将帮助您在工作中大展身手。

什么是 REST API ?

REST(Representational State Transfer)直译叫表现层状态转移, 是一种架构风格,是一种通常用于 Web 服务开发的通信方法。 REST 的通常比更重量级的SOAP(简单对象访问协议)更受欢迎,因为 REST 不会占用太多带宽,这使其更适合在网络通信较多的场景上使用。 SOAP 方法需要编写或使用提供的服务器程序(用于提供数据)和客户端程序(用于请求数据)

下图会帮助你的理解

构建 REST API 需要的工具

  • Python
  • Flask
  • Flask-SQLAlchemy
  • SQlite3
  • Jsonify

开始编码

从 Employees and Tracks Details中下载数据集,并放在名为“python rest”的项目文件夹中,把数据库名称为“chinook.db”

下载完成后,在python_rest 目录下创建server.py文件,我们之后会在这文件上编写 API 定义和 Flask 的代码。

接下来,我们用 python2.7 创建虚拟环境,并安装相关依赖库:

$ virtualenv venv
$ source venv/bin/activate
$ pip install flask flask-jsonpify flask-sqlalchemy flask-restful
$ pip freeze
复制代码

REST 有 4 个方法

  • GET
  • PUT
  • POST
  • DELETE

在开始写代码前,先保证你能够正常连接到数据库:

现在一切都设置好了,我们开始公开员工数据的代码,并跟踪来自数据库的数据,还添加了一个关于员工的查询操作符,其中员工的详细信息由EmployeeID搜索和获取

一起准备就绪后,我们就可以开始编写获取员工数据的代码,

from flask import Flask, request
from flask_restful import Resource, Api
from sqlalchemy import create_engine
from json import dumps
from flask.ext.jsonpify import jsonify

db_connect = create_engine('sqlite:///chinook.db')
app = Flask(__name__)
api = Api(app)

class Employees(Resource):
    def get(self):
        conn = db_connect.connect() # 连接数据库
        query = conn.execute("select * from employees") # 从数据库中查找数据
        return {'employees': [i[0] for i in query.cursor.fetchall()]} # 拿到数据,并返回

class Tracks(Resource):
    def get(self):
        conn = db_connect.connect()
        query = conn.execute("select trackid, name, composer, unitprice from tracks;")
        result = {'data': [dict(zip(tuple (query.keys()) ,i)) for i in query.cursor]}
        return jsonify(result)

class Employees_Name(Resource):
    def get(self, employee_id):
        conn = db_connect.connect()
        query = conn.execute("select * from employees where EmployeeId =%d "  %int(employee_id))
        result = {'data': [dict(zip(tuple (query.keys()) ,i)) for i in query.cursor]}
        return jsonify(result)
        

api.add_resource(Employees, '/employees') # Route_1
api.add_resource(Tracks, '/tracks') # Route_2
api.add_resource(Employees_Name, '/employees/') # Route_3


if __name__ == '__main__':
     app.run(port='5002')
复制代码

上面的代码创建了 3 个路由:

  • http://127.0.0.1:5002/employees 返回数据库中 employees 中所有用户的 id
  • http://127.0.0.1:5002/tracks 查看所有 tracks 表的详细信息
  • http://127.0.0.1:5002/employees/8 返回 employees id 为 8 的用户

本文创建API很简单。您还可以对数据进行 PUT、POST 和 DELETE 等操作进行实现。


via: www.codementor.io/sagaragarwa…

作者:[Agarwal](Project Link: github.com/sagaragarwa…) 译者:Alex1996a

转载于:https://juejin.im/post/5d3ffd38f265da03e83b4832

你可能感兴趣的:(用 Python 编写 Restful API)