アクセルキャンプ川柳API

句を登録したり、みんなの句からランダムな川柳を作ったりできるAPIです。

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

  1. 試したいリクエストを開く
  2. Try it out を押す
  3. 必要なデータを入力する
  4. Execute を押す
  5. ステータスコードとJSONを確かめる