| English | 意味 |
|---|---|
| request/rɪˈkwest/ | リクエスト |
| front end/frʌnt end/ | フロントエンド |
| back end/bæk end/ | バックエンド |
| server/ˈsɜːvə/ | サーバー |
| response/rɪˈspɒns/ | レスポンス |
| API/ˌeɪ piː ˈaɪ/ | API(アプリケーション・プログラム・インターフェース) |
| JSON/ˈdʒeɪsn/ | JSON(データ交換形式) |
学習者がURLの数字を変更する
- コースページが
/students/42/coursesを要求している。访问者が42 を43 に変更する。画面からリンクを非表示にしても、その要求を防ぐことはできない。 - フロントエンド がインターフェースを表示する。バックエンド はサーバー上で動作し、リクエストを処理してからレスポンスを送信する。
各リクエストの意味を確認する
- API はソフトウェア間の通信方法を示す。契約書にはメソッド、パス、入力、許容される呼び出し元、レスポンスフィールド、エラー時の振る舞いが記載される。
- 学生限定のコースリストの場合、サーバーは呼び出し者を識別し、権限をチェックしなければならない。ブラウザから提供された数値は身元の証明にはならない。
ブラウザが学生 43 のリストを取得しようとしている。呼び出し側がそのリストを読む権利があることを証明するものは何か?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
IDはリソースを選択するものであり、本人確認や権限の証明ではない。
レスポンスをデータとして読み取る
- JSONは、オブジェクト、配列、文字列、数値、ブール値、およびnullを表すことができます。Web APIでは一般的ですが、すべての応答がこれを使用するわけではありません。
- 正常なリストの場合、
[{"course_id":7,"title":"Robotics"}]となります。許可された空のリストは[]であり、どちらの結果もブラウザにコードの実行を指示するものではありません。
[{"course_id":7,"title":"Robotics"}] が表す一般的なデータ形式は何か?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
これはJSONであり、オブジェクトを含む配列である。
各ルールを強制できる場所に配置する
- ブラウザによる検証は即座にフィードバックを提供しますが、サーバー側でも入力と権限を独立して確認する必要があります。呼び出し元はあなたのフォームを使わずにリクエストを送信できる可能性があります。
- データベースパスワードやプライベートAPI認証情報はサーバー内に保持してください。ユーザーはブラウザでログインパスワードを入力することがありますが、それを安全に送信し、ダウンロード可能なコードにプライベートサービス認証情報を埋め込まないでください。
アプリケーションで使用されるプライベートデータベースパスワードはどこに保管すべきか?
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
ダウンロード可能なコードは inspection可能である。プライベートサービス認証情報はサーバー上に保持せよ。
フォームが入力を検証していても、サーバーは独立した入力チェックが必要である。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
呼び出し側はフォームをバイパスして直接リクエストを送信できる。
なぜブラウザの検証ではサーバーチェックを代替できないのかを説明せよ。
難易度 3/5 · 200 コイン + 今日初回完了時に小ボーナス付与
呼び出し側はフォームなしでリクエストを送信できるため、サーバーはそれを独立してチェックする。
ロード中、成功、失敗の状態を誠実に表示する
- リクエストが処理中の間はロード状態を表示します。成功後は返されたコースデータまたは空のリストメッセージを表示します。
- 失敗したリクエストには、有用なエラー状態が必要です。ネットワークエラーを「コースなし」とラベル付けしないでください。サーバーが空の結果であることを確認していないためです。
各結果を、誠実な表示と対応づけます。
難易度 2/5 · 140 コイン + 今日初回完了時に小ボーナス付与
未確認の結果は、空の成功リストとして表示してはいけません。
全体的な相互作用を追跡する
- 追跡:ブラウザのリクエスト → サーバーの入力・権限チェック → 許可されたデータの照合 → 応答 → ブラウザでの表示。必要なチェックに失敗した場合は照合を停止します。
- 許容される呼び出し元、拒否される呼び出し元、空の結果、失敗したリクエストをローカル Fixture でテストしてください。他の学生のデータを暴露してアクセスをテストしないでください。
ブラウザはユーザーを支援しますが、サーバーはルールを強制します。識別、権限、有効な入力、成功した照合は別個のチェックです。
この承認済みの正常な照会を処理する。
難易度 3/5 · 200 コイン + 今日初回完了時に小ボーナス付与
サーバーは私人データを送信する前に、そのルールを強制実行する。
すべてのWeb API応答はJSONを使用する必要があります。
難易度 1/5 · 100 コイン + 今日初回完了時に小ボーナス付与
JSONは一般的ですが、APIは他の文書化された形式也可以使用できます。