← Назад к вопросам

Являлся ли последний проект RESTful сервисом

1.0 Junior🔥 211 комментариев
#REST API и микросервисы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Являлся ли последний проект RESTful сервисом

Да, мой последний проект был полнофункциональным RESTful сервисом, построенным на Spring Boot с соблюдением REST архитектурных принципов.

Стек

  • Java 11+
  • Spring Boot 2.7
  • Spring Data JPA
  • PostgreSQL
  • Docker
  • JWT для аутентификации

REST endpoints

GET /api/v1/products - список товаров GET /api/v1/products/{id} - товар по ID POST /api/v1/products - создать товар PATCH /api/v1/products/{id} - обновить товар DELETE /api/v1/products/{id} - удалить товар

GET /api/v1/orders - мои заказы POST /api/v1/orders - создать заказ GET /api/v1/users/me - профиль

RESTful принципы

  1. Resource-oriented URLs

    • GET /api/v1/products (правильно)
    • Не использовал /api/v1/getProducts (неправильно)
  2. HTTP методы

    • GET для чтения
    • POST для создания
    • PATCH для обновления
    • DELETE для удаления
  3. HTTP статус коды

    • 200 OK
    • 201 Created
    • 204 No Content
    • 400 Bad Request
    • 404 Not Found
    • 500 Server Error
  4. Content negotiation

    • Request/Response: application/json
    • Accept headers

Архитектура слоев

Controller (REST endpoints)

Service (Business logic)

Repository (Data access)

Database (PostgreSQL)

Применённые техники

  1. Exception handling

    • GlobalExceptionHandler
    • Proper error responses
  2. Pagination

    • Page<DTO>
    • Pageable interface
  3. Filtering

    • Query parameters
    • FilterCriteria classes
  4. Authentication

    • JWT токены
    • Spring Security
    • Role-based access control
  5. Documentation

    • Swagger/OpenAPI
    • API documentation on /swagger-ui.html

Security

@EnableWebSecurity конфигурация HTTPS ready CSRF protection

RBAC (Role-Based Access Control)

Особенности

  • Без trailing slashes (/api/v1/products, не /products/)
  • Versionирование API (/api/v1/)
  • Proper Content-Type headers
  • Idempotent operations
  • Resource-oriented design

Тестирование

curl -X GET http://localhost:8080/api/v1/products

curl -X POST http://localhost:8080/api/v1/products -H "Content-Type: application/json" -d '{"name": "Laptop", "price": 1000}'

curl -X PATCH http://localhost:8080/api/v1/products/1 -H "Content-Type: application/json" -d '{"price": 900}'

curl -X DELETE http://localhost:8080/api/v1/products/1

Итоги

Да, полностью RESTful сервис:

  • Resource-oriented URLs
  • Правильные HTTP методы
  • Правильные HTTP статус коды
  • JSON request/response
  • API versionирование
  • Exception handling
  • Pagination и filtering
  • JWT security
  • API документация
  • Production-ready

Это был modern, scalable REST API.

Являлся ли последний проект RESTful сервисом | PrepBro