キーの保管とアプリケーションの許可を別に設計する

公開ステータスとキー付き検索を分けます。許可する条件、サーバーの秘密情報、応答確認と再試行を計画し、未測定の稼働保証を避けてください。

自分のアプリケーションの許可範囲を決める

アーカイブキーをサーバーで管理しても、アプリケーションに届くすべての要求が許可済みになるわけではありません。誰がどの検索を開始し、どのフィールドを見られるかを先に決めます。Reddit Gatewayは独立した過去のアーカイブで、Redditと提携していません。ライブデータ、Reddit OAuth、書き込みは提供しません。自分の利用者セッションと許可の判断は、アーカイブ取得の認証とは別の責任です。

利用者の送ったURLをそのまま転送するのではなく、許可したq、subreddit、日付条件へ変換してください。自分のサービスの必要に合わせ、記録数とページ数の上限を決めます。これはAPIに新しい安全機能があるという説明ではなく、アプリケーションの作業範囲を明確にする設計です。特定の権限制度や企業向け画面、自動的な不正利用防止の結果を保証するものではありません。

本物のキーはサーバーの秘密設定に置き、Authorization: Bearer YOUR_API_KEYまたはX-API-Key: YOUR_API_KEYで送ります。URLやブラウザーのコード、公開ログに含めません。アカウントパネルのSecure HttpOnly Cookieはアカウント操作用で、取得用キーの代用ではありません。再発行すると古い値が直ちに無効になるため、それを参照するアプリケーション処理も確認してください。

公開のstatusと実際の検索を分ける

GET /v1/statusはキー不要でクレジットを使いません。固定のサービス範囲とHTTP応答を示すだけで、アーカイブ、検索の実行、記録、キー、残高は検査しません。画面にアーカイブの健全性と表示しないでください。未実行の検索結果を推測したり、測っていない遅延や可用性の数値を作ったりする根拠にもできません。

実際の検索ではhttps://api.redditgateway.com/v1/search?q=database&subreddit=backend&limit=3を使えます。qは検索語、subredditはコミュニティ、limitは一応答の上限です。HTTP状態と存在するフィールドを確認してください。空ならその状態を利用者に説明し、欠損を推測で補いません。文章をローカルの確認待ち一覧へ渡す処理は、自分のアプリケーションの加工でありAPIの自動分析結果ではありません。

必要に応じてauthor、kind、UTCのYYYY-MM-DD形式のfromとtoで条件を絞ります。toの日付を含み、min_scoreは最低スコアの条件で並べ替えではありません。応答は平坦な記録です。読む、数えるためのツリーは不要で、存在するparent_idやlink_idで任意に整理できます。ただし検索フィルターではなく、欠けた親やコメントは戻りません。

ページ、失敗、費用をまとめて計画する

一要求は最大100件、一クエリは最大100ページで、各ページを別に要求します。結果はアーカイブ文書順で、日時、関連度、スコア順ではありません。合計のeqは正確、gteは下限、unknownやnullは信頼できる合計がない状態です。正確な合計も全件保存の証明ではありません。期間の分割は網羅性や重複のなさを保証しません。

HTTP 400では条件、401ではキー、402では残高を確認し、429では送信を待ちます。不正な要求は引き落とされず、上流障害では予約分が戻ります。ただし接続切断前にサーバーで有料の成功が成立している場合があります。成功した取得は空でも一クレジットで、成功した再試行は追加費用です。すべての失敗を同じ無制限の再試行に入れないでください。

どの条件、ページ、応答を保存したか、自分の処理識別子を使い秘密情報を明かさず記録します。保存状態を再送判断と合わせて考えられますが、記録がアーカイブの網羅性や永続性を証明するわけではありません。ホームには開始例、ドキュメントには仕様、料金には費用、APIキー取得にはアカウントの手順があります。一例の成功はアプリケーションのすべての権限設計が正しい証明ではありません。

APIキーを取得