Kiểm tra giữa kỳ
Khởi tạo một project mới và thực hiện những yêu cầu sau:
Cấu hình (3 đ)
-
Cài đặt thư viện & cấu hình nodemon:
- Môi trường dev (devDependencies):
nodemon - Môi trường production (dependencies):
dotenv,express,jsonwebtoken - Cấu hình
nodemontrong scripts section củapackage.json(Kết quả mong muốn: gõnpm run devđể chạynodemon)
- Môi trường dev (devDependencies):
-
Tạo file
.envvới nội dung sau:
API_Token = "ORR7z3KMKceWMK5xIFUNLlrFceXN"
JWT_Secret = "toYfwSSniETCVTs6"
- Tạo router tương ứng với từng mục:
simplepostsauth
Triển khai API (7 đ)
simple router
/submit-formdata- Method: POST
- Header:
- Content-type: application/x-www-form-urlencoded
- Body:
name=John&age=18 - Response:
- 200:
{
"data": {
"name": "John",
"age": 18
}
} - 400: Nếu
bodykhông đủ thông tinnamevàage
- 200:
/submit-json- Method: POST
- Header:
- Content-type: application/json
- Body:
{"name": "Bob", "class": "NodeJS"} - Response:
- 200:
{
"data": {
"name": "Bob",
"class": "NodeJS"
}
} - 400: Nếu
bodykhông đủ thông tinnamevàage
- 200:
/get-data- Method: GET
- Header:
- X-API-KEY: [API_Token]
- Response:
- 200:
{
"message": "Authorized"
} - 401: Nếu
requestkhông có API_Token / API_Token không đúng
- 200:
auth router
JWT Structure
- Expire: 5mins
- Payload:
{
"email": "<user-email>",
"role": "<user-role>"
}
-
/register:- Method: POST
- Header:
- Content-type: application/json
- Body:
{"username": "<your-user-name>", "password": "<your-password>", "role": "<user-role>", "email": "<user-email>"} - Response:
- 200:
{
"message": "Account created"
} - 400: Nếu
bodykhông đủ thông tin
- 200:
-
/login:- Method: POST
- Header:
- Content-type: application/json
- Body:
{"username": "<exist-username>", "password": "<user-password>} - Response:
- 200:
{
"token": "<JWT Token>"
} - 400: Nếu
bodykhông đủ thông tin
- 200:
JWT sign
const token = jwt.sign(payload, SECRET_KEY, { expiresIn: "1h" });
posts router
Post class
{
"id": int #increment,
"title": string,
"description": string,
"author_email": string #user-email
}
/- Method: GET
- Header:
- Authorization:
Bearer <jwt-token>
- Authorization:
- Response:
- 200:
{
"data": [list of post]
} - 401: Nếu
requestkhông có token / token bị hết hạn
- 200:
/- Method: POST
- Header:
- Authorization:
Bearer <jwt-token>
- Authorization:
- Body:
{"title": "<title>", "description" : "<description>"} - Response:
- 200:
{
"message": "created"
} - 401: Nếu
requestkhông có token / token bị hết hạn - 400: Nếu
bodybị thiếu thông tin
- 200:
JWT verify
jwt.verify(token, SECRET_KEY, (err, user) => {
/*callback*/
});
Nộp bài
-
Link nộp bài (yêu cầu đăng nhập tài khoản của trường)
-
Nén file và đặt tên theo cú pháp: MSSV_Ten
Chỉ nộp những file sau đây
- File chứa code (server.js, routers)
- package.json
- .env
Notes: Nộp sai file / định dạng sẽ bị hủy kết quả thi