Unity结合Flask实现排行榜功能
作者:网络转载 发布时间:[ 2015/3/5 16:17:29 ] 推荐标签:功能测试 软件测试 代码
业余做的小游戏,排行榜本来是用PlayerPrefs存储在本地,现在想将数据放在服务器上。因为功能很简单,选择了小巧玲珑的Flask来实现。
闲话少叙。首先考虑URL的设计。排行榜无非是一堆分数score的集合,按照REST的思想,不妨将URL设为/scores。用GET获得排行榜数据,用POST添加一条新纪录到排行榜。此外,按照惯例,排行榜的数据不需要更新和删除。
Flask自身不支持REST,但我们可以通过route和method自己实现。下面创建一个原型版本的rank_server.py。命名沿袭了Rails的习惯:
from flask import Flask
app = Flask(__name__)
@app.route('/scores', methods=['GET'])
def index():
return 'index'
@app.route('/scores', methods=['POST'])
def create():
return 'create'
if __name__ == '__main__':
app.run(debug=True)
执行python rank_server.py来启动自带的服务器。下面我们安装cURL来测试应用。
brew install curl
测试GET:
`curl -i -X GET 127.0.0.1:5000/scores`
测试POST:
`curl -i -X POST 127.0.0.1:5000/scores`
-i参数可以展示响应的头部信息,便于debug。-X参数指定请求的方法method。
可以看到测试成功。
下面我们建立存储数据的表。本地测试我们使用sqlite,之后部署使用mysql。
建表文件create_rank.sql内容如下:
DROP TABLE IF EXISTS rank;
CREATE TABLE rank(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(255) NOT NULL,
score INTEGER NOT NULL
);
Mac自带sqlite。执行下面语句导入sql文件:
sqlite3 rank.db < create_rank.sql
然后随便插入几条测试数据。如:
INSERT INTO rank (name, score) VALUES ('A', 100);
INSERT INTO rank (name, score) VALUES ('B', 200);
INSERT INTO rank (name, score) VALUES ('C', 300);
针对数据库,我们在rank_server.py中加入下面一段代码,用于在请求前后处理数据库连接。
import sqlite3
DATABASE = 'rank.db'
@app.before_request
def before_request():
g.db = sqlite3.connect(DATABASE)
@app.teardown_request
def teardown_request(exception):
if hasattr(g, 'db'):
g.db.close()
我们规定服务器和客户端使用JSON传输数据。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11