APIの使い方
APIを使うと、Pythonプログラムからサーバーへ「句を登録して」「川柳を作って」とお願いできます。
FlaskのPythonプログラム → 川柳API → JSON形式の結果
基本URL
https://rickysensei.pythonanywhere.com
Pythonからアクセスする準備
まず、ターミナルで requests をインストールします。
python -m pip install requests
Pythonプログラムでは、基本URLとAPIの道すじをつなげてアクセスします。
import requests
BASE_URL = "https://rickysensei.pythonanywhere.com"
response = requests.get(f"{BASE_URL}/health")
print(response.status_code)
print(response.json())
リクエスト一覧
| メソッド | URL | できること |
|---|---|---|
| GET | /health |
APIが動いているか確かめる |
| POST | /v1/parts |
上五・中七・下五の句を1件登録する |
| GET | /v1/parts |
登録されている句の一覧を取得する |
| GET | /v1/senryu/random |
ランダムな川柳を1句作る |
GETはデータを「もらう」とき、POSTはデータを「送って登録する」ときに使います。
各リクエストの使い方
GETAPIが動いているか確かめる
URL:/health
response = requests.get(f"{BASE_URL}/health")
print(response.json())
返ってくるJSON
{
"status": "ok"
}
ok が返ってきたら、APIは動いています。
POST句を1件登録する
URL:/v1/parts
text に句、position に句の場所を入れて送ります。
part = {
"text": "古池や",
"position": "upper"
}
response = requests.post(
f"{BASE_URL}/v1/parts",
json=part
)
print(response.status_code)
print(response.json())
登録できたときのJSON例
{
"id": 1,
"text": "古池や",
"position": "upper",
"created_at": "2026-09-02T10:00:00"
}
GET登録済みの句を取得する
URL:/v1/parts
response = requests.get(f"{BASE_URL}/v1/parts")
parts = response.json()
for part in parts:
print(part["text"])
上五だけに絞りたいときは、position を付けます。
response = requests.get(
f"{BASE_URL}/v1/parts",
params={"position": "upper"}
)
返ってくるJSON例
[
{
"id": 1,
"text": "古池や",
"position": "upper",
"created_at": "2026-09-02T10:00:00"
}
]
GETランダムな川柳を作る
URL:/v1/senryu/random
response = requests.get(
f"{BASE_URL}/v1/senryu/random"
)
data = response.json()
print(data["senryu"])
返ってくるJSON例
{
"upper": "古池や",
"middle": "蛙飛びこむ",
"lower": "水の音",
"senryu": "古池や\n蛙飛びこむ\n水の音"
}
senryu の中にある \n は、画面に表示すると改行になります。
句を登録するときのルール
| 項目 | ルール |
|---|---|
text |
必ず入力し、1文字以上20文字以下にする |
| 改行 | 句は改行せず、1行で送る |
| 空白 | 句の前後の空白は自動的に取り除かれる |
position |
upper、middle、lower のどれかを使う |
| 同じ句 | 同じ場所に、同じ文章を2回登録できない |
| 音数 | APIは5音・7音かどうかを自動で判定しない。自分で確かめる |
position の意味
| 送る値 | 意味 |
|---|---|
upper |
上五(最初の5音) |
middle |
中七(真ん中の7音) |
lower |
下五(最後の5音) |
エラーが起きたら
response.status_code を見ると、成功したかどうかを確かめられます。
| ステータスコード | 意味 | 確かめること |
|---|---|---|
200 |
取得成功 | JSONの中身を使える |
201 |
登録成功 | 句が新しく登録された |
409 |
そのままでは実行できない | 同じ句の重複や、上五・中七・下五の不足を確かめる |
422 |
送ったデータに問題がある | 空欄、20文字超え、改行、position のつづりを確かめる |
response = requests.get(f"{BASE_URL}/v1/senryu/random")
if response.status_code == 200:
print(response.json()["senryu"])
else:
error_data = response.json()
print("APIエラー:", error_data.get("detail"))
通信できない場合は、URLのつづり、インターネット接続、APIが動いているかを確かめましょう。
ブラウザでAPIを試す
FastAPIには、ブラウザからAPIを試せるページがあります。基本URLの後ろに /docs を付けてアクセスします。
https://rickysensei.pythonanywhere.com/docs
- 試したいリクエストを開く
- Try it out を押す
- 必要なデータを入力する
- Execute を押す
- ステータスコードとJSONを確かめる