Connecting the app to the data
Введено| English | Значение |
|---|---|
| parameterised query/ˌpærəˈmetəraɪzd ˈkwɪərɪ/ | параметризованный запрос |
Действительный ID может все равно запрашивать приватные данные
- Идентификатор студента может быть действительным целым числом, но при этом принадлежать кому-то другому. Одной лишь валидации ввода недостаточно для разблокировки списка приватных курсов.
- Для этого маршрута аутентифицированный студент может читать только свой собственный список. Определите личность вызывающей стороны и обеспечьте выполнение этой политики перед извлечением приватных строк.
A submitted student ID has the right type. What must still be checked for a private lookup?
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
Correct shape does not establish access.
Извлекайте только разрешенные строки и поля
- Параметризованный запрос связывает разрешенный идентификатор студента как данные. Выбирайте только поля, необходимые интерфейсу, такие как ID курса и название.
- Не загружайте приватные записи для каждого студента и не скрывайте ненужные в браузере. Получатель мог бы просмотреть полный ответ.
Why must private records for every student not be sent and merely hidden by browser filtering?
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
Enforce private data access on the server before returning rows.
Определите ответы «пусто» и «запрещено»
- В данном контракте разрешенный студент без курсов получает 200 и
[]. Несуществующий ресурс или запрещенная вызывающая сторона следует согласованной политике API. - Некоторые политики используют 404, чтобы избежать раскрытия факта существования приватных данных. Сохраняйте эту политику последовательной; не используйте успешный ответ для сокрытия неожиданного сбоя базы данных.
Under this route contract, a permitted student exists but has no courses. Which response is appropriate?
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
A successful empty list is a defined outcome, not a database failure.
Отображайте ответ без запутанных состояний
- При успехе отображайте выбранные названия курсов как текст. Показывайте «Нет курсов пока» только после успешного пустого ответа.
- Во время загрузки показывайте, что запрос находится в очереди. При сбое объясните, что список не удалось загрузить, и предложите соответствующее повторное действие; не утверждайте, что список пуст.
Write separate messages for a successful empty list and a failed request.
Сложность 3/5 · 200 монет + небольшой бонус за первое выполнение сегодня
“No courses yet” differs from “Could not load courses. Try again.”
Match response progress to display.
Сложность 2/5 · 140 монет + небольшой бонус за первое выполнение сегодня
Display only what the observed outcome supports.
Обработка изменений без частичного сохранения
- Запись, включающая несколько связанных изменений в базе данных, может потребовать транзакции: коммитировать целевые изменения вместе или откатить их при сбое.
- Валидировать и авторизовать запись независимо. Успешное предыдущее чтение не дает права на каждое последующее изменение и не делает значение из выпадающего списка безопасным для вставки в SQL-запрос.
A dropdown value is safe to paste into SQL because users cannot send other values.
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
Callers can send altered requests. Bind the value and validate it on the server.
Related writes may need a transaction so a failure does not leave half the intended changes saved.
Сложность 1/5 · 100 монет + небольшой бонус за первое выполнение сегодня
A transaction can commit the intended group or roll it back; validation and authorization are still required.
Проверка полного разрешенного пути
- Проследить путь: аутентификация и разрешения → допустимый ввод → параметризованный запрос → определенная структура ответа → честное отображение. Тестировать запрет доступа до проверки отображения.
- Использовать фикстуры для обычного списка, пустого списка и неудачного запроса. Подтвердить, что приватные поля и строки других студентов отсутствуют в разрешенных ответах.
Правильный запрос является частью правильного маршрута. Вызывающий объект, разрешенные данные, контракт ответа и видимое состояние также должны соответствовать друг другу.
Order this permitted course-list workflow.
Сложность 3/5 · 200 монет + небольшой бонус за первое выполнение сегодня
The server’s checks precede retrieval and delivery.