LoginSignup
3
0

More than 1 year has passed since last update.

[学習メモ]エンジニア探検隊#1 -APIを作ってみる-

Last updated at Posted at 2023-03-22

第一話 はじめての開発 

  • 著者: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の知識が浅いのでそのあたりの理解を深める。
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0