Get Started
最初の 1 リクエストまで
サインアップして API キーを発行し、八訂準拠の食品データを叩くまでを なぞるっちゃ。各ステップに cURL / JavaScript / Python のコピペ例が あるっちゃよ⚡️
例のベース URL は http://localhost:8787(pnpm dev のローカル)っちゃ。本番では、デプロイした成分 API のベース URL に 置き換えてっちゃ。
サインアップ
メール+パスワードでアカウントを作るっちゃ。 メール検証は無効なので、サインアップ成功で即ログイン状態になるっちゃ(成功応答の
Set-Cookie がセッション)。次の キー発行で使うので、Cookie を必ず保存しておくっちゃよ。# -c でセッション Cookie を cookies.txt に保存(次のキー発行で使う)
curl -i -c cookies.txt -X POST http://localhost:8787/api/auth/sign-up/email \
-H 'content-type: application/json' \
-d '{"email":"[email protected]","password":"password1234","name":"me"}'API キーを発行
ログイン状態(セッション Cookie)で
POST /v1/keys を叩くとキーを発行できるっちゃ。 平文キー(key)は発行時の応答に 1 度だけ含まれるっちゃ。サーバは SHA-256 ハッシュしか保存しないので、 控え忘れたら失効して再発行っちゃ。# -b で保存済み Cookie を送信。応答の "key"(平文)は**この 1 度だけ**返る。
curl -X POST http://localhost:8787/v1/keys -b cookies.txt \
-H 'content-type: application/json' \
-d '{"name":"my first key"}'
# → {"id":"...","name":"my first key","keyPrefix":"fnk_xxxx","tier":"free","key":"fnk_<平文>"}最初のリクエスト
発行したキーを
X-API-Key ヘッダに付けて、データルートを叩くっちゃ。栄養値は種別(kind)を保持していて、測定値は { kind, value, unit }、微量・未測定は値を持たず{ kind, unit } で返るっちゃ。# 発行したキーを X-API-Key ヘッダに付けてデータルートを叩く。
curl "http://localhost:8787/v1/foods/01001" \
-H "X-API-Key: fnk_xxxxxxxxxxxxxxxx"応答(抜粋・GET /v1/foods/01001・既定の core):
{
"foodNumber": "01001",
"name": "アマランサス 玄穀",
"groupId": "01",
"nutrients": {
"energy_kcal": { "kind": "measured", "value": 343, "unit": "kcal" },
"protein": { "kind": "measured", "value": 12.7, "unit": "g" },
"fat": { "kind": "measured", "value": 6, "unit": "g" },
"dietaryFiber": { "kind": "measured", "value": 7.4, "unit": "g" },
"carbohydrate": { "kind": "measured", "value": 64.9, "unit": "g" },
"salt": { "kind": "measured", "value": 0, "unit": "g" }
},
"portions": []
}kind は種別を保持するっちゃ(数値に潰さない)。値を持つ 種別と持たない種別があるっちゃよ:
// 測定値(value あり)
{ "kind": "measured", "value": 7.4, "unit": "g" }
// 推定値(括弧付き)も value あり
{ "kind": "estimated", "value": 11.3, "unit": "g" }
// 微量 Tr は value を持たない
{ "kind": "trace", "unit": "mg" }
// 未測定(- または空欄)も value なし
{ "kind": "notMeasured", "unit": "µg" }お試しトークン(認証なしで試す)
アカウントを作らずに試したいときは、お試しトークンが使えるっちゃ。
POST /v1/trial-token に Turnstile の ウィジェットトークンを渡すと短命トークン(24 時間/生涯 30 リクエスト)が返るので、Authorization: Bearer で渡すっちゃ。※ Turnstile のフロント側ウィジェットはフォローアップ予定っちゃ。 今は取得済みのウィジェットトークンを差し込んで試してっちゃ。# 1) Turnstile を 1 回解いて得たウィジェットトークンを渡し、短命トークンを得る。
curl -X POST http://localhost:8787/v1/trial-token \
-H 'content-type: application/json' \
-d '{"turnstileToken":"<widget token>"}'
# → {"token":"<payload>.<sig>","expiresAt":"..."}
# 2) 得たトークンを Authorization: Bearer で渡してデータルートを叩く。
curl "http://localhost:8787/v1/foods?q=アマ&limit=5" \
-H 'Authorization: Bearer <payload>.<sig>'これで使えるっちゃ!
サインアップからキー発行、最初のリクエストまで一通り完了っちゃ。あとは 栄養素ティアやポーション、レート制限まわりを押さえれば本番に乗せられるっちゃよ⚡️