Являлся ли последний проект RESTful сервисом
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
# Являлся ли последний проект 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 принципы
-
Resource-oriented URLs
- GET /api/v1/products (правильно)
- Не использовал /api/v1/getProducts (неправильно)
-
HTTP методы
- GET для чтения
- POST для создания
- PATCH для обновления
- DELETE для удаления
-
HTTP статус коды
- 200 OK
- 201 Created
- 204 No Content
- 400 Bad Request
- 404 Not Found
- 500 Server Error
-
Content negotiation
- Request/Response: application/json
- Accept headers
Архитектура слоев
Controller (REST endpoints)
↓
Service (Business logic)
↓
Repository (Data access)
↓
Database (PostgreSQL)
Применённые техники
-
Exception handling
- GlobalExceptionHandler
- Proper error responses
-
Pagination
- Page<DTO>
- Pageable interface
-
Filtering
- Query parameters
- FilterCriteria classes
-
Authentication
- JWT токены
- Spring Security
- Role-based access control
-
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.