Простий бекенд для блогу Java Spring
В рамках этого проекта я создам бэкенд для управления статьями, который будет служить для добавления, удаления, оценки и отображения статей. Этот бэкенд будет взаимодействовать с базой данных MongoDB, где будут храниться статьи и их оценки.
Основные пункты проекта:
Создание конечных точек для API:
Конечные точки будут позволять:
- l Добавление новых статей: Пользователи смогут добавлять статьи в базу данных.
- l Удаление существующих статей: Пользователи смогут удалять статьи по их ID.
- l Получение списка всех статей: Пользователи смогут просматривать полный список статей.
- l Получение детальной информации о конкретной статье: Пользователи смогут получать подробную информацию о выбранной статье на основе ее ID.
- l Оценка статей: Пользователи смогут оценивать статьи с помощью «пальца вверх» или «пальца вниз». Для предотвращения повторной оценки будет сохраняться session token пользователя.
- l Редактирование статей: Пользователи смогут редактировать свои статьи. При этом будет проверяться, соответствует ли session token пользователя ID автора статьи.
post_service
endpoints
/stories/article?id=id(int) GET return 200 json {articleText:str, articleRating:int, articleTitle:str, authorId:int}
/stories/article/create POST send json {articleText:str, articleTitle:str} return 200 OK
/stories/article/edit POST send json {articleText:str, articleTitle:str, articleId:int} return 200 OK
/stories/article/rate POST send json {articleId:int, vote:1/-1 (int)} return 200 json {articleRating}
/stories/article/delete POST send json {articleId:int} return 200 OK
/stories/article_get_list GET return json{[{articleRating:int, articleTitle:str, authorId:int}, {articleRating:int, articleTitle:str, authorId:int}, ...]}
Работа с MongoDB:
Статьи и их оценки будут храниться в базе данных MongoDB.
Структура каждой статьи будет включать:
- l Название: Название статьи.
- l Содержание: Основной текст статьи.
- l ID автора: Идентификатор автора статьи.
- l Оценка: Оценки пользователей (пальцы вверх/вниз) и session token пользователей, которые дали оценку.
- l Дата создания: Дата, когда статья была создана.
Система будет рассчитывать среднюю оценку на основе пользовательских голосов.
Управление пользовательскими сессиями:
В куках пользователей будет храниться session token.
При попытке редактирования статьи будет проверяться, соответствует ли session token пользователя ID автора статьи, что гарантирует возможность редактирования только автором.
Реализация API:
Я буду использовать язык программирования Java и фреймворк Spring Boot, с помощью которого реализую REST API. Это позволит фронтенду взаимодействовать с бэкендом через HTTP-запросы (GET, POST, DELETE), получая данные о статьях, добавляя, удаляя и изменяя их.
По завершении проекта я представлю код Java с необходимыми классами и методами, а также подробную документацию к проекту.
Дополнительные детали по авторизации и валидации пользователя:
Авторизация и проверка авторства:
При каждом запросе от пользователя на сервер будет передаваться cookie, содержащий JSON Web Token (JWT). Этот токен будет подписан сторонним сервисом для обеспечения целостности данных.
JWT будет декодироваться на стороне сервера для получения информации о пользователе, включая его ID (id) и имя пользователя (username). Декодирование позволит извлечь содержимое токена, которое в закодированном виде представляет строку типа ergir543u8dfhudhuee333j.
После получения токена сервер отправит его на внешний микросервис авторизации для проверки подлинности. Это будет осуществляться через HTTP-запрос с использованием библиотеки request (или аналогичной). Запрос будет проходить между контейнерами напрямую, минуя взаимодействие с клиентской стороной.
Эндпоинт для проверки токена будет выглядеть как /users/validate?token=<токен>. При отправке запроса на этот адрес сервис авторизации подтвердит или опровергнет валидность токена.
Ожидаемый ответ от сервиса валидации:
- 1. 204 (No Content) — токен действителен, пользователь авторизован.
- 2. 401 (Unauthorized) — токен недействителен, доступ запрещен.
Структура данных пользователя и статьи:
Каждый пользователь будет иметь:
- l ID пользователя (integer).
- l Username (текст).
Статья будет содержать:
- l ID статьи (integer).
- l ID автора (integer).
- l Username автора (возможно, для отображения).
Процесс валидации:
После получения JWT из cookie, сервер декодирует его для извлечения ID пользователя и имени пользователя.
Сервер отправляет токен на микросервис авторизации по заранее определенному эндпоинту (/users/validate) для проверки подлинности.
В случае успешной валидации (ответ 204), сервер разрешает пользователю выполнять действия, такие как редактирование статьи. При этом сервер сравнивает ID автора статьи с ID пользователя, извлеченным из токена.
Если валидация не проходит (ответ 401), сервер возвращает сообщение об ошибке, запрещая доступ к редактированию.
Технические детали:
Для обмена данными между контейнерами будет использоваться классический HTTP-запрос.
Конфигурация эндпоинта для валидации (/users/validate) будет храниться в environment-переменных, чтобы обеспечить гибкость и безопасность при разворачивании приложения.
Додатки 1
-
3 дні2061 UAH
128 3 дні2061 UAHЯ ретельно ознайомився з вимогами проекту і впевнений, що надам найкраще можливе рішення. У мене є досвід роботи з усіма необхідними технологіями. Рішення буде надійним і стабільним, забезпеченим тестами для гарантії правильної роботи. Відкритий до подальшої співпраці.
-
3 дні3349 UAH
1271 10 0 3 дні3349 UAHДоброго вечора, маю великий досвід у розробці на java. Реалізую API на Spring з Mongo DB. Також не проблема додати JWT токени. Зроблю все за ТЗ.
Ціна 65 EUR.
Термін виконання 3 дні.
-
3 дні3349 UAH
333 3 дні3349 UAHДобрий вечір!
Можу зробити ваш API на Nest.js, MongoDB та Swagger Open API. Також налаштуваю авторизацію через nestjs/jwt. Це сучасний і надійний стек, який відмінно підійде для масштабованого проєкту.
Якщо потрібно, можу виконати завдання саме на Java з Spring Boot. У мене є досвід роботи з обома технологіями, тож зроблю все швидко і якісно.
Що саме входить у роботу:
Налаштую всі потрібні ендпоінти.
… 1. Підключу базу даних MongoDB і зроблю структуру для статей.
2. Налаштую JWT-авторизацію для захисту даних.
3. Додам документацію API через Swagger.
4. Реалізую перевірку авторства та прав доступу.
5. Розгортання сервера на вашому Ubuntu сервері за допомогою Docker, за необхідності.
6. У разі проблем на сервері, і якщо вина буде з мого боку, тоді сервіс безкоштовно.
Є досвід у схожих проєктах, тому впевнений, що результат вас влаштує.
Напишіть, якщо готові обговорити деталі! 😊
-
3 дні6183 UAH
165 3 дні6183 UAHПривіт!
Я переглянув ваш проект і впевнений, що можу розробити всі необхідні функції. У мене є досвід створення RESTful API з використанням Spring Boot та інтеграції MongoDB. Крім того, я можу успішно реалізувати систему аутентифікації та авторизації користувачів на основі JWT.
Мій план:
Розробити всі вказані кінцеві точки API.
Створити та інтегрувати необхідні моделі даних у MongoDB.
Налаштувати систему валідації JWT та інтегрувати її з зовнішнім мікросервісом.
… Реалізувати механізми авторизації користувачів та голосування, як описано.
Провести ретельне тестування та надати повну документацію після завершення.
Не соромтеся звертатися, щоб обговорити деталі. Я буду радий допомогти з вашим проектом!
-
5 днів6183 UAH
787 10 0 5 днів6183 UAHДоброго дня! Завдання зрозуміле. Зроблю швидко і якісно з використанням Java та Spring Boot.
Актуальні фриланс-проєкти в категорії Java
Розробка Android-додатку плеєра для сервісу онлайн-ТБ
27 000 UAH
Потрібен Android-розробник для створення нативного Android-додатку для сервісу онлайн-ТБ. Планується дві версії: для мобільних пристроїв: смартфони та планшети; для Android TV / Android STB: телеприставки. Орієнтовні терміни: до 3 місяців. Орієнтовний бюджет: 150 000 грн.… Java, Розробка під Android ∙ 27 днів 23 години тому ∙ 32 ставки |