第一話 はじめての開発
- 著者:takaryo1010
- 協力者:fukuchy
- ここでは、私と、協力者の学習のためのメモを残していきます。ほかの人の学習の助けになれば幸いです。
- 作るもの:ゲームの結果をデータベース上に保存したい
- 使用言語:
Python
- 必要ナレッジ
- APIについて
- requestsあたりについて
- json形式について
やったこと
1. 簡単なAPIを作ってみる
- 使用モジュール
flask
- 実際に書いたコード
api.py
from flask import Flask, jsonify,request
import csv
app = Flask(__name__)
@app.route('/echo', methods=["GET","POST"])
def echo():
if request.method == "GET":
return jsonify({'message': "hello"})
elif request.method == "POST":
user = request.json["user"]
date = request.json["date"]
subject = request.json["subject"]
#CSVに保存
# with open("datebase.csv") as f:
# writer = csv.writer(f)
# writer.writerow([user,date,subject])
with open("database.csv", mode = "w") as file:
string = user+","+date+","+subject
file.write(string)
return jsonify({'user': user, 'date': date,"subject":subject})
...
if __name__ == "__main__":
app.run(host='127.0.0.1', port=8888, debug=True)
メモ(つまったところ)
- おそらく、この
...
は必須。@app
はdefの上に置く。これらによって一つの関数が決定されている。- 複数関数を作りたい場合は、
/echo
のところをほかのものに変更する。
- 複数関数を作りたい場合は、
api(抜粋).py
@app.route('/echo', methods=["GET","POST"])
def echo():
"~~~~~~~~~~~~~~~"
return jsonify({'user': user, 'date': date,"subject":subject})
...
-
curl
コマンドを使えば簡単にGETやPOSTができるらしいが、うまくいかなかったのでPythonのrequests
モジュールを利用して投げた。 - 以下そのコード(POST用)
request.py
import requests
POST_URL = "http://127.0.0.1:8888/echo"
name = input("name:")
date = input("date:")
sub = input("sebject:")
request_body = {"user":name,"date":date,"subject":sub}
res = requests.post(POST_URL,json=request_body)
#res = requests.get(POST_URL)
print("--------------------")
print(res.text)
print("--------------------")
- 出力結果
-
flask
の方のコードを起動しながらリクエスト用のコードを実行。 - 出力はjson形式で帰ってくるようにした。
-
入力
name:takaryo
date:2023/03/22
sebject:math
出力結果
--------------------
{
"date": "2023/03/22",
"subject": "math",
"user": "takaryo"
}
--------------------
感想
- flaskについての知識はかなり浅いが、とりあえずjson形式で返せるようなAPIを作れた。
- 次はデータベースを実際に立ててみて、APIを通じてデータの保存、抽出ができるようにしたい。
-
curl
コマンドがうまくいかなかったけど、とりあえずPython
で動く形になったからよしっ!(よくない) -
json
の知識が浅いのでそのあたりの理解を深める。