Üdv, ezt a Projectet a Codeyard cég számára kellett elkészítenem, mint Backend fejlesztői tesztfeladat.
Első lépésként klónozzuk le a repository-t
gh repo clone SweetRazory/codeyard-moleculer-assignment
Majd, az alábbi parancs segítségével, telepítsük a project számára szükséges package-ket
npm install
vagy
yarn install
Ez után, ha fut a Docker Desktop alkalmazásunk, szimplán futtassuk a következő parancsot, és elméletben már fut is a Dev környezet
npm run dc:up
vagy
yarn run dc:up
Az API-t, alap esetben a http://localhost:3000
cím alatt fogod tudni elérni.
Az alábbiakban megtalálod az elérhető API végpontokat és a hozzájuk szükséges adatokat:
- Végpont:
POST /auth/login
- Leírás: Bejelentkezteti a felhasználót az adott e-mail cím és jelszó alapján.
email
(kötelező): A felhasználó e-mail címe.password
(kötelező): A felhasználó jelszava.
{
"result": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyfQ.-TJ2Rqg7u-D8s1BcsY0tLI9X-cj3pWAw2TPUu5I0uKU"
}
}
- 401 Unauthorized: Ha az e-mail cím vagy jelszó nem megfelelő.
- 500 Internal Server Error: Az általános szerverhiba esetén.
- Végpont:
POST /auth/register
- Leírás: Regisztrálja az új felhasználót a megadott paraméterek alapján.
email
(kötelező): Az új felhasználó e-mail címe.password
(kötelező): Az új felhasználó jelszava.name
(opcionális): Az új felhasználó teljes neve.
{
"result": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyfQ.-TJ2Rqg7u-D8s1BcsY0tLI9X-cj3pWAw2TPUu5I0uKU"
}
}
- 401 Unauthorized: Ha a felhasználó már létezik az adatbázisban.
- 500 Internal Server Error: Az általános szerverhiba esetén.
- Végpont:
GET /api/users
- Leírás: Lekéri az összes felhasználót a megadott paraméterek alapján.
- Opcionális paraméterek:
showIds
: Boolean típus, felhasználók azonosítóinak megjelenítése.showPasswords
: Boolean típus, felhasználói jelszavak megjelenítése.showRawData
: Boolean típus, felhasználói adatok nyers formájának megjelenítése.
showIds
(opcionális): Hatrue
, akkor a válasz tartalmazza a felhasználók azonosítóit.showPasswords
(opcionális): Hatrue
, akkor a válasz tartalmazza a felhasználói jelszavakat.showRawData
(opcionális): Hatrue
, akkor a válasz tartalmazza a felhasználói adatokat nyers formájukban.
{
"result": {
"users": [
{
"name": "Almasi Kristof",
"email": "almasi@kristdfof.com",
"addresses": [],
"tokens": []
},
{
"email": "sweetrazory@icloud.com",
"addresses": [],
"tokens": [
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI2NTBiNWMxZGJiN2I4ODcwZGU5OTMyZDUiLCJpYXQiOjE2OTUyNDMyOTN9.6nJXALUDATVytjL_S-erdQSGrME7kBTCxWa8Z_ZnmVU"
}
]
}
]
}
}
- 500 Internal Server Error: Az általános szerverhiba esetén.
- Végpont:
GET /api/user/:userId
- Leírás: Lekéri a megadott azonosítójú felhasználót.
userId
(kötelező): A lekérdezni kívánt felhasználó azonosítója.
{
"result": {
"user": {
"_id": "650b47de3e0822aa5ccaf52a",
"name": "Almasi Kristof",
"email": "almasi@kristof.com",
"password": "$2b$10$3KfNodlLRfvz9NwVlVxF2eiV4wFx9584B/B0gKh8HvidLqU26qvSK",
"addresses": [],
"tokens": [],
"__v": 0
}
}
}
- 400 Bad Request: Ha a megadott azonosító nem érvényes.
- 500 Internal Server Error: Az általános szerverhiba esetén.
- Végpont:
POST /api/user
- Leírás: Létrehoz egy új felhasználót a megadott paraméterek alapján.
- Opcionális paraméterek:
name
: Szöveg típusú, felhasználó teljes neve.address
: Tömb típusú, felhasználó címei.
email
(kötelező): Az új felhasználó e-mail címe.password
(kötelező): Az új felhasználó jelszava.name
(opcionális): Az új felhasználó teljes neve.address
(opcionális): Az új felhasználó címei tömbje.
{
"result": {
"message": "Successfully created user"
}
}
- 400 Bad Request: Ha hiányoznak a kötelező paraméterek, vagy az e-mail cím nem érvényes.
- 401 Unauthorized: Ha a felhasználó már létezik az adatbázisban.
- 500 Internal Server Error: Az általános szerverhiba esetén.
- Végpont:
PATCH /api/user/:userId
- Leírás: Frissíti a megadott azonosítójú felhasználó adatait.
userId
(kötelező): A frissíteni kívánt felhasználó azonosítója.data
(kötelező): Az új felhasználói adatok objektuma.
{
"result": {
"message": "Successfully updated user"
}
}
- 400 Bad Request: Ha a megadott azonosító nem érvényes, vagy hiányoznak kötelező paraméterek.
- 500 Internal Server Error: Az általános szerverhiba esetén.
- Végpont:
DELETE /api/user/:userId
- Leírás: Törli a megadott azonosítójú felhasználót.
userId
(kötelező): A törölni kívánt felhasználó azonosítója.
{
"result": {
"message": "Successfully deleted user"
}
}
- 400 Bad Request: Ha a megadott azonosító nem érvényes.
- 500 Internal Server Error: Az általános szerverhiba esetén.
- Végpont:
GET /api/user/:userId/addresses
- Leírás: Lekéri a megadott azonosítójú felhasználó összes címét.
userId
(kötelező): A felhasználó azonosítója, akinek a címeit le szeretnénk kérni.
{
"result": {
"addresses": [
{
"zip_code": 4321,
"country": "hu",
"city": "Budapest",
"county": "Pest county",
"street": "Some st.",
"houseNumber": "123/b"
},
{
"zip_code": 4321,
"country": "hu",
"city": "Gyor",
"county": "Gyor-Moson-Sopron county",
"street": "Other st.",
"houseNumber": "1 11/a"
}
]
}
}
- 400 Bad Request: Ha a megadott felhasználó azonosító nem érvényes.
- 500 Internal Server Error: Az általános szerverhiba esetén.
- Végpont:
POST /api/user/:userId/address
- Leírás: Létrehoz egy új címet a megadott felhasználóhoz.
userId
(kötelező): A felhasználó azonosítója, akinek a címét létre szeretnénk hozni.data
(kötelező): Az új cím adatai.
{
"result": {
"message": "Successfully created address"
}
}
- 400 Bad Request: Ha a megadott felhasználó azonosító nem érvényes, vagy hiányoznak kötelező paraméterek.
- 500 Internal Server Error: Az általános szerverhiba esetén.
- Végpont:
PATCH /api/user/:userId/address/:addressId
- Leírás: Frissíti a megadott cím adatait a megadott felhasználóhoz tartozóan.
userId
(kötelező): A felhasználó azonosítója, akinek a címét frissíteni szeretnénk.addressId
(kötelező): A frissíteni kívánt cím azonosítója.data
(kötelező): Az új cím adatai.
{
"result": {
"message": "Successfully updated address"
}
}
- 400 Bad Request: Ha a megadott felhasználó vagy cím azonosító nem érvényes, vagy hiányoznak kötelező paraméterek.
- 500 Internal Server Error: Az általános szerverhiba esetén.
- Végpont:
DELETE /api/user/:userId/address/:addressId
- Leírás: Törli a megadott címet a megadott felhasználóhoz tartozóan.
userId
(kötelező): A felhasználó azonosítója, akinek a címét törölni szeretnénk.addressId
(kötelező): A törölni kívánt cím azonosítója.
{
"result": {
"message": "Successfully deleted address"
}
}
- 400 Bad Request: Ha a megadott felhasználó vagy cím azonosító nem érvényes.
- 500 Internal Server Error: Az általános szerverhiba esetén.
Az API használata előtt be kell jelentkezned. Ehhez az /auth/login
vagy /auth/register
végpontot használhatod, majd a kapott token-t kell használnod az egyes végpontokhoz való hozzáféréshez. Az authentikált kéréseknek a következő módon kell tartalmazniuk a token-t:
Authorization: Bearer <TOKEN>
A projekt mellé mellékelem a Postmanbe importálható gyűjteményt is, amely tartalmazza a végpontokat és kéréseket. Az importáláshoz kövesd az alábbi lépéseket:
- Nyisd meg a Postman alkalmazást.
- Kattints a "File" menüpontra.
- Válaszd ki a "Import" opciót.
- Válaszd ki a mellékelt
Codeyard Test API.postman_collection.json
fájlt, majd kattints az "Import" gombra.
Az elmúlt időszakban főként AWS Lambda funkcionalitásokkal foglalkoztam Node.js és TypeScript környezetben, emellett GitHub Actions és Terraformmal is. Éppen ezért a MoleculerJS-el kellett egy pár napot játszanom, mielőtt ténylegesen belekezdtem a projectbe, próbáltam minél többet megérteni belőle, remélem a kódom reprezentálja nem csak a Moleculerben szerzett hirtelen tapasztalatomat, de általánosságban a fejlesztői képességeimet is.
Köszönöm szépen hogy megtiszteltél és időt áldoztál arra hogy elolvasd ezt a kis readme-t, legyen szép napod :)