4.0 KiB
4.0 KiB
Első Gyakorlat - MINTA Megoldás
Ez a mappa tartalmazza az első gyakorlat teljes, működő megoldását.
Amit implementáltunk:
1. Layered Architecture (Rétegezett Architektúra)
- API Layer: Controllers, Routers - HTTP kérések kezelése
- Application Layer: Commands, Queries, Handlers - Üzleti logika
- Domain Layer: Interfaces (Repository pattern)
- Infrastructure Layer: Repositories - Adatkezelés (JSON file-ok)
2. CQRS Pattern (Command Query Responsibility Segregation)
- Commands: Írási műveletek (Create, Update, Delete)
- Queries: Olvasási műveletek (GetAll, GetById)
- Handlers: Command és Query végrehajtók
3. Repository Pattern
IUserRepositoryésIPostRepositoryinterfészekUserRepositoryésPostRepositoryimplementációk- Adatok tárolása JSON file-okban
Struktúra
src/
├── API/
│ ├── server.js # Express szerver
│ ├── controllers/
│ │ ├── userController.js # User endpoint logika
│ │ └── postController.js # Post endpoint logika
│ └── routers/
│ ├── userRouter.js # User route-ok
│ └── postRouter.js # Post route-ok
├── Application/
│ ├── users/
│ │ ├── command/ # User írási műveletek
│ │ │ ├── createUserCommand.js
│ │ │ ├── createUserCommandHandler.js
│ │ │ ├── updateUserCommand.js
│ │ │ ├── updateUserCommandHandler.js
│ │ │ ├── deleteUserCommand.js
│ │ │ └── deleteUserCommandHandler.js
│ │ └── query/ # User olvasási műveletek
│ │ ├── getAllUsersQuery.js
│ │ ├── getAllUsersQueryHandler.js
│ │ ├── getUserByIdQuery.js
│ │ └── getUserByIdQueryHandler.js
│ └── blogs/
│ ├── command/ # Post írási műveletek
│ └── query/ # Post olvasási műveletek
├── Domain/
│ ├── IUserRepository.js # User repository interface
│ └── IPostRepository.js # Post repository interface
└── Infrastructure/
├── userRepository.js # User repository implementáció
├── postRepository.js # Post repository implementáció
├── user.json # User adatok
└── post.json # Post adatok
API Endpoints
Users
GET /api/users- Összes user lekéréseGET /api/users/:id- Egy user lekérésePOST /api/users- Új user létrehozásaPUT /api/users/:id- User módosításaDELETE /api/users/:id- User törlése
Posts
GET /api/posts- Összes post lekéréseGET /api/posts/:id- Egy post lekéréseGET /api/posts/user/:userId- User összes postjaPOST /api/posts- Új post létrehozásaPUT /api/posts/:id- Post módosításaDELETE /api/posts/:id- Post törlése
Indítás
npm install
npm start
A szerver elindul a http://localhost:3000 címen.
Példa Használat
User létrehozása
curl -X POST http://localhost:3000/api/users \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"email": "john@example.com",
"age": 25
}'
Post létrehozása
curl -X POST http://localhost:3000/api/posts \
-H "Content-Type: application/json" \
-d '{
"title": "My First Post",
"content": "Hello World!",
"author": "John Doe"
}'
Tanulási Pontok
- Separation of Concerns: Minden réteg saját felelősséggel rendelkezik
- CQRS: Írási és olvasási műveletek szétválasztása
- Repository Pattern: Adatkezelés absztrakciója
- Dependency Injection: Handler-ek megkapják a repository-t
- Express.js: RESTful API építése
- File-based Storage: JSON file-ok használata adatbázis helyett