ChatGPTに簡単なCRUD_WebAPIアプリを作ってもらいました。
ChatGPTへの指示文:
以下の内容をCRUDアプリケーションのWebAPIを作成してください。
・Pythonで記述する
・フレームワークはFastAPIを使う
・データベースはSQLiteを使う
・機能はユーザー作成、ユーザー情報の取得、ユーザー情報の変更、ユーザーの削除
回答:
以下が、CRUDアプリケーションのWebAPIの例です。この例では、FastAPIとSQLiteを使用して、ユーザーの作成、取得、更新、削除を処理します。データベースには、Pythonの組み込みモジュールであるsqlite3を使用します。この例を動作させるには、FastAPIとsqlite3をインストールする必要があります。
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import sqlite3
app = FastAPI()
db_path = "users.db"
class User(BaseModel):
username: str
password: str
age: int
def create_user_table():
with sqlite3.connect(db_path) as conn:
conn.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
password TEXT NOT NULL,
age INTEGER NOT NULL
)
""")
@app.post("/users")
def create_user(user: User):
with sqlite3.connect(db_path) as conn:
cursor = conn.cursor()
cursor.execute("""
INSERT INTO users (username, password, age) VALUES (?, ?, ?)
""", (user.username, user.password, user.age))
user_id = cursor.lastrowid
conn.commit()
return {"id": user_id, **user.dict()}
@app.get("/users/{user_id}")
def get_user(user_id: int):
with sqlite3.connect(db_path) as conn:
cursor = conn.cursor()
cursor.execute("""
SELECT * FROM users WHERE id = ?
""", (user_id,))
user = cursor.fetchone()
if not user:
raise HTTPException(status_code=404, detail="User not found")
user_dict = {"id": user[0], "username": user[1], "password": user[2], "age": user[3]}
return user_dict
@app.put("/users/{user_id}")
def update_user(user_id: int, user: User):
with sqlite3.connect(db_path) as conn:
cursor = conn.cursor()
cursor.execute("""
UPDATE users SET username = ?, password = ?, age = ? WHERE id = ?
""", (user.username, user.password, user.age, user_id))
conn.commit()
return {"id": user_id, **user.dict()}
@app.delete("/users/{user_id}")
def delete_user(user_id: int):
with sqlite3.connect(db_path) as conn:
cursor = conn.cursor()
cursor.execute("""
DELETE FROM users WHERE id = ?
""", (user_id,))
conn.commit()
return {"message": "User deleted successfully"}
create_user_table()
この例の動作を確認するには、上記のコードをPythonファイルに保存して、次のコマンドを実行してください。
uvicorn main:app --reload
これで、CRUDアプリケーションのWebAPIが起動し、次のエンドポイントが利用可能になります。
POST /users
GET /users/{user_id}
PUT /users/{user_id}
DELETE /users/{user_id}
結果:
無事にWebAPIが立ち上がって成功しました。テスト用に以下のpyも書いてpostしました。面倒な場合はブラウザ直のpostmanとかでも可
import requests
user_data = {
"username": "JohnDoe",
"password": "password123",
"age": 25
}
response = requests.post("http://localhost:8000/users", json=user_data)