Данный репозиторий содержит Express.js REST API для JetBrains Conf Yeti.
.
├── docker_startup_scripts # запускаются при старте docker контейнера базы
├── manual_population # вручную заполнить базу, детали ниже
├── src # express.js приложение
├── .env # env varibles
├── .eslintrc.js # конфиг файл ESlint, за основу взяты настройки Airbnb
├── .gitignore # .gitignore для node.js + jetbrains
├── .travis.yml # конфиг файл для Travis CI
├── database.env # env variables для mongo, см docker-compose.yml
├── docker-compose.yml # конфиг файл для docker-compose
├── jest.config.js # конфиг файл для Jest
├── package.json
├── package-lock.json
├── README.md # <-- вы здесь
└── server.js # непосредственно сам сервер, подключается к mongo и запускает express
Очень просто:
- Устанавливаем пакеты:
npm install
- Запускаем базу:
docker-compose up -d
илиdocker-compose up
в другом окне терминала, как вам удобно - Запускаем проект:
npm start
- Проект запущен! По умолчанию, на порту 8888. По умолчанию уже имеет данные из предоставленного conferences.json. Это можно убрать при желании, инструкции в самом низу.
В проекте есть следующие функции:
-
Получить список всех имеющихся конференций
- Адрес: http://localhost:8888/api/conference/all
- Метод: GET
- Параметры: не принимает
- Возвращает: массив документов модели Conference
- HTTP статус коды:
- 200, работает как надо
- 500, произошла ошибка в conference-service.js, но судя по документации (отсутствуют @throws что в методе find, что Query) таковых не должно быть
-
Поиск по конференциям
- Адрес: http://localhost:8888/api/conference/search
- Метод: POST
- Параметры: Может принять любое из полей модели Conference, а также _id документа. В случае string полей, возможен поиск по любой подстроке (regex) оригинального текста, case insensitive. Обязательные поля: title, location.city, location.country, dateStart, dateFinish, status
- Возвращает: массив документов модели Conference, подходящих под запрос
- HTTP статус коды:
- 200, работает как надо
- 500, произошла непредвиденная ошибка (так же как и в предыдущем случае)
-
Создание новой конференции
- Адрес: http://localhost:8888/api/conference/new
- Метод: POST
- Параметры: поля модели Conference, можно указать _id. Обязательные поля: title, location.city, location.country, dateStart, dateFinish, status
- Возвращает: HTTP статус 200 если прошло успешно, или 400, 500 в противном случае.
- HTTP статус коды:
- 200, работает как надо
- 400, ошибка пользователя. Возвращает текст с описанием ошибки
- 500, произошла непредвиденная ошибка (так же как и в предыдущем случае)
Изменить расширение скрипта ./docker_startup_scripts/002-populate-production.sh
с .sh
на любой, кроме .js
. Таким образом docker не распознает его и не запустит. Теперь остается перезапустить docker базы по новой если он уже был запущен.
В случае, если будет необходимость загрузить в уже запущенную базу conferences.json.
Для этого необходимо при запущенном контейнере с базой сделать:
node manual_population/001_initial.js
Обратите внимание что все существующие документы удалятся