Simple backend for a Java Spring blog
В рамках этого проекта я создам бэкенд для управления статьями, который будет служить для добавления, удаления, оценки и отображения статей. Этот бэкенд будет взаимодействовать с базой данных 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-переменных, чтобы обеспечить гибкость и безопасность при разворачивании приложения.
Applications 1
-
3 days46 USD
128 3 days46 USDI have carefully reviewed the project requirements and I am sure I will deliver the best solution possible. I have an experience with all required technologies. The solution will be robust and reliable covered with tests to ensure correct execution. Open for further cooperation.
-
3 days76 USD
1271 10 0 3 days76 USDGood evening, I have extensive experience in Java development. I implement APIs on Spring from Mongo DB. It is also not a problem to add JWT tokens. I will do everything according to the specifications.
Price 65 EUR.
Deadline 3 days.
-
3 days76 USD
333 3 days76 USDGood evening!
I can create your API using Nest.js, MongoDB, and Swagger Open API. I will also set up authorization through nestjs/jwt. This is a modern and reliable stack that is perfect for a scalable project.
If needed, I can complete the task specifically in Java with Spring Boot. I have experience working with both technologies, so I will do everything quickly and efficiently.
What exactly is included in the work:
I will set up all the necessary endpoints.
… 1. I will connect the MongoDB database and create a structure for articles.
2. I will set up JWT authorization to protect data.
3. I will add API documentation via Swagger.
4. I will implement author verification and access rights.
5. I will deploy the server on your Ubuntu server using Docker, if necessary.
6. In case of server issues, if the fault is on my side, then the service will be free.
I have experience in similar projects, so I am confident that the result will satisfy you.
Write to me if you are ready to discuss the details! 😊
-
3 days139 USD
165 3 days139 USDHello!
I have reviewed your project and I am confident that I can develop all the required features. I have experience in building RESTful APIs with Spring Boot and integrating MongoDB. Additionally, I can successfully implement a JWT-based user authentication and authorization system.
My Plan:
Develop all the specified API endpoints.
Create and integrate the necessary data models in MongoDB.
Set up a JWT validation system and integrate it with the external microservice.
… Implement user authorization and voting mechanisms as described.
Perform thorough testing and provide complete documentation after completion.
Feel free to reach out to discuss the details. I would be happy to assist with your project!
-
5 days139 USD
787 10 0 5 days139 USDGood afternoon! The task is clear. I will do it quickly and efficiently using Java and Spring Boot.
Current freelance projects in the category Java
Development of an Android application player for the online TV service
609 USD
We need an Android developer to create a native Android application for an online TV service. Two versions are planned: for mobile devices: smartphones and tablets; for Android TV / Android STB: set-top boxes. Estimated timeline: up to 3 months. Estimated budget: 150,000… Java, App Development for Android ∙ 27 days 21 hours back ∙ 32 proposals |