{"id":22382949,"url":"https://github.com/fey/xsolla-summer-school-2021-nodejs-example","last_synced_at":"2025-06-11T08:09:29.658Z","repository":{"id":117283526,"uuid":"396445553","full_name":"fey/xsolla-summer-school-2021-nodejs-example","owner":"fey","description":null,"archived":false,"fork":false,"pushed_at":"2021-08-15T18:22:15.000Z","size":39150,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T19:47:38.779Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-08-15T18:10:42.000Z","updated_at":"2021-08-15T18:22:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"d9d61552-66c5-4aaf-86ad-3bd0aff75e4e","html_url":"https://github.com/fey/xsolla-summer-school-2021-nodejs-example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fey%2Fxsolla-summer-school-2021-nodejs-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fey%2Fxsolla-summer-school-2021-nodejs-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fey%2Fxsolla-summer-school-2021-nodejs-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fey%2Fxsolla-summer-school-2021-nodejs-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fey","download_url":"https://codeload.github.com/fey/xsolla-summer-school-2021-nodejs-example/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fey%2Fxsolla-summer-school-2021-nodejs-example/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":257302558,"owners_count":22524129,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-05T00:42:28.879Z","updated_at":"2025-06-11T08:09:29.629Z","avatar_url":"https://github.com/fey.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xsolla_summer2021_be\n   Тестовое задание к летней школе Xsolla Summer School Backend 2021\n\n## Задание:\n   Задача: реализация системы управления товарами для площадки электронной коммерции (от англ. e-commerce) с поддержкой RESTful API.\n   Для реализации прототипа системы напишите:\n   Методы API для управления товарами(CRUD): \n   Создание товара. Метод генерирует и возвращает уникальный идентификатор товара.\n   Редактирование товара. Метод изменяет все данные о товаре по его идентификатору или SKU.\n   Удаление товара по его идентификатору или SKU.\n   Получение информации о товаре по его идентификатору или SKU.\n   Получение каталога товаров. Метод возвращает список всех добавленных товаров.\n\n## Реализация.\n   Для реализации прототипа выбрана связка NodeJS(Express) и MongoDB через библиотеку Mongoose.\n\n## Установка\n1. Скачать и развернуть репозиторий.\n2. Установить необходимые зависимости:\n    `$ npm istall`\n3. В терминале введите команду для запуска сервера:\n    `$ npm run serve`\n\n## Использование\n### Модель товара:\n   Товар определяется уникальным идентификатором(_id) и обязательно должен иметь SKU, имя, тип, стоимость.  \nПример:\n  ```\n  {\n    \"_id\": \"60e6e5500b3f9952357096ff\",\n    \"sku\": \"G11C22P5\",\n    \"type\": \"game\",\n    \"name\": \"The Last of us 2\",\n    \"price\": \"55\"\n  }\n  ```\n### Методы API для управления товарами(CRUD): \n  * #### Создание товара (CREATE)\n    Для создания товара необходимо передать объект товара в формате JSON в теле запроса.\n    - Тип запроса: POST\n    - URL: `http://localhost:5000/api/products`  \n    - В body запроса необходмио передать  создаваемый объект JSON:  \n    ```\n    {\n      \"_id\": \"60e6e5500b3f9952357096ff\",\n      \"sku\": \"G11C22P5\",\n      \"type\": \"game\",\n      \"name\": \"The Last of us 2\",\n      \"price\": \"55\"\n    }\n    ```\n    В ответ сервер вернет уникальный идентификатор товара (60f006edcac6edea0962318e)\n    \n  * #### Получение товара по SKU или уникальному идентификатору или списка товаров (READ)  \n    Для получения товара по SKU необходимо передать соответствующий get-параметр sku.\n    - Тип запроса: GET\n    - URL: `http://localhost:5000/api/products?sku=G11C21P5`  \n    В ответ сервер вернет объект товара:\n     ```\n    {\n      \"_id\": \"60e6e30e0b3f9952357096f8\",\n      \"sku\": \"G11C21P5\",\n      \"type\": \"game\",\n      \"name\": \"The Last of us\",\n      \"price\": 57,\n      \"__v\": 0\n    }\n    ```\n    Для получения товара по уникальному идентификатору необходимо передать сам уникальный идентификатор.\n    - Тип запроса: GET\n    - URL: `http://localhost:5000/api/products/60eed470aa7711da2e229137`  \n    В ответ сервер вернет объект товара:\n     ```\n    {\n      \"_id\": \"60eed470aa7711da2e229137\",\n      \"sku\": \"G23C5P5\",\n      \"type\": \"game\",\n      \"name\": \"Detroit: Become Human\",\n      \"price\": 45,\n      \"__v\": 0\n    }\n    ```\n  * #### Изменение товара по SKU или уникальному идентификатору (UPDATE)  \n    Для изменения товара по SKU или уникальному идентификатор необходимо передать измененный объект товара в теле запроса.\n    - Тип запроса: PUT\n    - URL: `http://localhost:5000/api/products` \n    - В body запроса необходмио передать создаваемый объект JSON:  \n     ```\n    {\n      \"_id\": \"60e6e30e0b3f9952357096f8\",\n      \"sku\": \"G11C25P5\",\n      \"type\": \"game\",\n      \"name\": \"The Last of us\",\n      \"price\": 55,\n      \"__v\": 0\n    }\n    ```\n    В ответ сервер вернет обновленный объект товара.\n  * #### Удаление товара по SKU или уникальному идентификатору (DELETE)  \n    Для удаления товара по SKU необходимо передать sku в строке запроса.\n    - Тип запроса: DELETE\n    - URL: `http://localhost:5000/api/products?sku=G5C3P5` \n    В ответ сервер вернет null.\n    Для удаления товара по уникальному идентификатору необходимо передать уникальный идентификатор в строке запроса.\n    - Тип запроса: DELETE\n    - URL: `http://localhost:5000/api/products/60f006edcac6edea0962318e` \n    В ответ сервер вернет null.\n    \n## Дополнительно\n   Приложение развернуто на публичном хостинге Heroku:\n   https://whispering-meadow-42322.herokuapp.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffey%2Fxsolla-summer-school-2021-nodejs-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffey%2Fxsolla-summer-school-2021-nodejs-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffey%2Fxsolla-summer-school-2021-nodejs-example/lists"}