-
Notifications
You must be signed in to change notification settings - Fork 23
Backend
Привет! В данном разделе находятся ответы вопросы, которые мы получаем чаще, чем хотелось бы. Пожалуйста, ознакомьтесь с ними прежде чем задавать вопрос в бота поддержки.
Самый эффективный способ узнать ответ на появившийся вопрос — прочитать условие задания несколько раз, с паузами, и дать некоторое время самому себе, чтобы полученная информация усвоилась и всё стало на свои места. Да, это непросто, но очень полезно! Такая тактика с высокой вероятностью позволит вам получить ответ быстрее, нежели ждать его в боте поддержки. Это поможет организаторам олимпиады сконцентрироваться на вопросах, которые не освещаются в условии.
Бота поддержки стоит воспринимать как крайнюю меру, если самостоятельно разобраться с вопросом не получается. Пользуйтесь интернетом для поиска оветов на общие вопросы, не относящиеся конкретно к данному заданию.
Вам необходимо реализовать HTTP-сервер, который будет реализовывать описанные методы и будет обращаться к СУБД для хранения данных. На проверку необходимо сдать репозиторий с реализованным приложением. Все необходимые зависимости (PostgreSQL, Redis, ...) тестирующая система запустит самостоятельно во время тестирования.
Open API — это специальный формат для формального описания API. Он позволяет указать схему запросов и ответов, которой должно следовать ваше приложение. Подробнее про Open API можно почитать по ссылке. Со спецификацией Open API для нашего задания можно ознакомиться в файле api.yml (ссылка кликабельна).
Да, можете. Вы сами выбираете, как написать собственное приложение. Ограничение на набор библиотек и подходов нет. Главное, чтобы собрался Docker-образ с работающим HTTP-сервером.
Вы можете это сделать для локального тестирования. Например, это можно сделать с помощью docker compose.
В рамках тестирования мы самостоятельно запустим наши собственные контейнеры PostgreSQL, Redis и другими зависимостями.
Можно использовать MySQL, sqlite, ClickHouse, Cassandra, Kafka, nats? Или хотя бы MongoDB?... Это мои любимые технологии, они правда здесь нужны!
Нет.
Нет. Но можете попробовать :)
Наши механики должны были откатить данные изменения, поэтому необходимо сделать git pull, при необходимости добавить файлы в .gitignore.
Нет.
Нет. Если структура ответа предполагает опциональность поля, сервер не должен возвращать данное поле при его отсутствии. Запросы с неописанными в спецификации полями можно отклонять (400), на ваше усмотрение.
На ваше усмотрение. Тестирующая система не будет делать такие запросы.
Руководствуйтесь здравым смыслом. Если на указанный адрес можно отправить электронное письмо, принимайте его. Можете изучить, какие e-mail'ы допустимы при регистрации на github.com, и сделать так же.
В условии указаны более человекочитаемые фразы. При тестировании будет проверяться то, что указано в спецификации.
Нет, валидация должна быть регистронезависимой. То есть пользователь может указать rU, а компания — RU, и это будут эквивалентные значения. Причем оба значения будут корректными.
Нет. Только status code.
Скорее всего ваше приложение не может запуститься / не отвечает на /api/ping. Раскройте вкладку Application logs для первой группы тестов.
При отправке времени комментария используйте формат RFC3339. Этот формат позволяет указать часовой пояс, к которому относится переданное время. Примерны корректных значений: 2019-10-12T07:20:50Z(UTC+0), 2019-10-12T07:20:50+00:00 (UTC+0), 2019-10-12T14:20:50+07:00 (UTC+7), 2019-10-12T03:20:50-04:00 (UTC-4).
Нет. При тестировании система самостоятельно подставит нужные env.
Да.
Для тестирования в Tavern включена нестрогая валидация ответа. Tavern будет сравнивать только те поля, которые указаны в expected значении. Сервер при этом должен передавать все обязательные поля из спецификации, так как они могут быть проверены в других тестах.
В публичных тестах сообщение вида Extra-keys in ... носит информационный характер. Если публичные тесты не прошли и вы видите сообщение Extra keys in response: {'company_id', 'company_name', 'used_count', 'like_count', 'active', 'promo_id'}, причина падения тестов не в нём.
На ваше усмотрение. Можете возвращать ошибку, можете сохранить промокод (тогда он будет неактивным).
Да.
Можете считать пустой список и отсутствие поля эквивалентными значениями. Если поступил запрос с пустым списком, в ответе вы можете не возвращать данное поле.
Это github старается маскировать пароли, токены и другие секреты, чтобы их труднее было украсть, когда вы хотите показать свой экран кому-то другому.
Если приходит запрос по ID промокода / комментария, который не соответствует формату UUID, возвращать 400 или 404?
На ваше усмотрение. Можете возвращать 400 или 404.