Prosty backend dla bloga 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-переменных, чтобы обеспечить гибкость и безопасность при разворачивании приложения.
Załączniki 1
-
3 dni169 PLN
128 3 dni169 PLNDokładnie przeanalizowałem wymagania projektu i jestem pewien, że dostarczę najlepsze możliwe rozwiązanie. Mam doświadczenie we wszystkich wymaganych technologiach. Rozwiązanie będzie solidne i niezawodne, objęte testami, aby zapewnić poprawne wykonanie. Otwarty na dalszą współpracę.
-
3 dni275 PLN
1271 10 0 3 dni275 PLNDobry wieczór, mam duże doświadczenie w programowaniu w Java. Realizuję API na Spring z Mongo DB. Również nie ma problemu z dodaniem tokenów JWT. Zrealizuję wszystko zgodnie z TZ.
Cena 65 EUR.
Termin realizacji 3 dni.
-
3 dni275 PLN
333 3 dni275 PLNDobry wieczór!
Mogę stworzyć API na Nest.js, MongoDB i Swagger Open API. Również skonfiguruję autoryzację przez nestjs/jwt. To nowoczesny i niezawodny stos, który doskonale nadaje się do skalowalnego projektu.
Jeśli potrzebujesz, mogę wykonać zadanie na Java z Spring Boot. Mam doświadczenie w pracy z obiema technologiami, więc zrobię wszystko szybko i jakościowo.
Co dokładnie wchodzi w zakres pracy:
Skonfiguruję wszystkie potrzebne punkty końcowe.
… 1. Podłączę bazę danych MongoDB i stworzę strukturę dla artykułów.
2. Skonfiguruję autoryzację JWT dla ochrony danych.
3. Dodam dokumentację API przez Swagger.
4. Zrealizuję weryfikację autorstwa i praw dostępu.
5. Rozwinę serwer na twoim serwerze Ubuntu za pomocą Dockera, w razie potrzeby.
6. W przypadku problemów na serwerze, jeśli wina będzie po mojej stronie, wtedy usługa będzie bezpłatna.
Mam doświadczenie w podobnych projektach, więc jestem pewien, że wynik cię usatysfakcjonuje.
Napisz, jeśli jesteś gotowy omówić szczegóły! 😊
-
3 dni508 PLN
165 3 dni508 PLNCześć!
Przejrzałem Twój projekt i jestem pewny, że mogę opracować wszystkie wymagane funkcje. Mam doświadczenie w budowaniu interfejsów API RESTful z użyciem Spring Boot oraz integracji z MongoDB. Dodatkowo mogę pomyślnie wdrożyć system uwierzytelniania i autoryzacji użytkowników oparty na JWT.
Mój plan:
Opracować wszystkie określone punkty końcowe API.
Utworzyć i zintegrować niezbędne modele danych w MongoDB.
Skonfigurować system walidacji JWT i zintegrować go z zewnętrzną mikroserwisem.
… Wdrożyć mechanizmy autoryzacji użytkowników i głosowania zgodnie z opisem.
Przeprowadzić dokładne testy i dostarczyć pełną dokumentację po zakończeniu.
Nie wahaj się skontaktować, aby omówić szczegóły. Chętnie pomogę w Twoim projekcie!
-
5 dni508 PLN
787 10 0 5 dni508 PLNDzień dobry! Zadanie jest jasne. Zrobię szybko i jakościowo z użyciem Java i Spring Boot.
Aktualne zlecenia dla freelancerów w kategorii Java
Opracowanie aplikacji Android odtwarzacza dla usługi telewizji online
2220 PLN
Potrzebny programista Android do stworzenia natywnej aplikacji Android dla usługi telewizji online. Planowane są dwie wersje: dla urządzeń mobilnych: smartfony i tablety; dla Android TV / Android STB: dekodery. Orientacyjne terminy: do 3 miesięcy. Orientacyjny budżet: 150… Java, Programowanie na Androida ∙ 26 dni 21 godzin temu ∙ 31 ofert |