• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Unity結合Flask實現排行榜功能

    發表于:2015-04-01來源:uml.org.cn作者:娃娃點擊數: 標簽:Unity
    業余做的小游戲,排行榜本來是用PlayerPrefs存儲在本地,現在想將數據放在服務器上。因為功能很簡單,就選擇了小巧玲瓏的Flask來實現。 閑話少敘。首先考慮URL的設計。排行榜無

      業余做的小游戲,排行榜本來是用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傳輸數據。

      GET請求返回的JSON格式如下:

    {
    "data":
    [
    {
    "id": 0,
    "name": "A",
    "score": 100
    },
    {
    "id": 1,
    "name": "B",
    "score": 200
    }
    ]
    }

    原文轉自:http://www.uml.org.cn/Test/201503235.asp

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>