- Trước tiên cần cài đặt php, composer, nodejs và sql(mysql, pgsql,...)
- Tạo một file .env (copy từ file .env.example)
- Config database tại file .env này
- Chạy command:
composer install
- Chạy command:
npm install
- Database & seed:
php artisan migrate --seed
- Chạy command:
php artisan serve --port=8000
- GET: localhost:8000/api/todos
- params (optional): pageSize=9, color=[green,blue,orange,purple,red], status=all|active|completed|deleted, sortBy=dateDesc|dateAsc|nameDesc|nameAsc
- POST: localhost:8000/api/todos
- param: text="Feed my cat"
- GET: localhost:8000/api/todos/mark-completed
- param (optional): ids=[1,2,3]
- GET: localhost:8000/api/todos/clear-completed
- param (optional): ids=[1,2,3]
- GET: localhost:8000/api/todos/{id}
- PUT: localhost:8000/api/todos/{id}
- params (optional): text="Go to sleep", color=green|blue|orange|purple|red, completed=true|false
- DELETE: localhost:8000/api/todos/{id}
- Param
status
với một trong các giá trịall
để lấy tất cả các todo chưa bị xóaactive
để lấy tất cả các todo chưa hoàn thành và chưa bị xóacompleted
để lấy tất cả các todo đã hoàn thành và chưa bị xóadeleted
để lấy tất cả các todo đã bị xóa
- Param
colors
với giá trị string như sau[green,blue,orange,purple,red]
- Param
sortBy
với một trong các giá trịdateDesc
để sort theo ngày giảm dần (ngày mới nhất trước)dateAsc
để sort theo ngày tăng dần (ngày cũ nhất trước)nameDesc
để sort theo tên giảm dần (Z->A)nameAsc
để sort theo tên tăng dần (A->Z)
Khi không thêm param nào, mặc định route sẽ tìm tất cả các todo chưa bị xóa, kết quả được sort theo ngày mới nhất trước
Ví dụ kết quả trả về khi tìm thấy todo (status code 200):
{
"data": [
{
"id": 10,
"text": "123",
"completed": false,
"color": null
},
{
"id": 11,
"text": "456",
"completed": false,
"color": null
},
{
"id": 12,
"text": "789",
"completed": true,
"color": {
"name": "Green"
}
}
],
"links": {
"first": "http://127.0.0.1:8000/api/todos?page=1",
"last": "http://127.0.0.1:8000/api/todos?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "http://127.0.0.1:8000/api/todos?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "http://127.0.0.1:8000/api/todos",
"per_page": 9,
"to": 3,
"total": 3
}
}
Nếu không có todo nào thì kết quả như sau (status code 404):
{
"message": "Todos not found."
}
POST: localhost:8000/api/todos
text
với giá trị là nội dung ngắn gọn của một todo, ví dụFeed a cat
Ví dụ kết quả trả về (status code 200)
{
"data": {
"id": 13,
"text": "1010101",
"completed": false,
"color": null
}
}
Ví dụ kết quả trả về với route: http://localhost:8000/api/todos/1
{
"data": {
"id": 1,
"text": "Dicta atque optio praesentium esse",
"completed": false,
"color": {
"name": "Purple"
}
}
}
Nếu không có todo nào thì kết quả như sau (status code 404):
{
"message": "Todo not found."
}
- Param
text
- Giá trị là nội dung ngắn gọn của một todo, ví dụ
Feed a cat
- Giá trị là nội dung ngắn gọn của một todo, ví dụ
- Param
completed
với một trong các giá trị sau:true
nghĩa là todo đã hoàn thànhfalse
nghĩa là todo chưa hoàn thành
- Param
color
với một trong các giá trị string màu nhưgreen
,blue
,orange
,purple
,red
Nếu không có param nào được đưa vào, request sẽ bị từ chối (status code 422)
{
"message": "The given data was invalid.",
"errors": {
"text": [
"The text field is required when none of color / completed are present."
],
"color": [
"The color field is required when none of text / completed are present."
],
"completed": [
"The completed field is required when none of text / color are present."
]
}
}
Nếu param color
hoặc completed
không hợp lệ, request sẽ bị từ chối (status code 422)
{
"message": [
"Color not found, please try again.",
"Invalid status, please try again."
]
}
Ngoài ra, có thể update todo theo các thuộc tính riêng biệt, ví dụ
PUT http://localhost:8000/api/todos/1
với param text
giá trị Do something else
PUT http://localhost:8000/api/todos/1
với param color
giá trị green
PUT http://localhost:8000/api/todos/1
với param complete
giá trị true
PUT http://localhost:8000/api/todos/1
với param color
giá trị green
và complete
giá trị true
Kết quả trả về khi update thành công (status code 200)
{
"data": {
"id": 1,
"text": "Dicta atque optio praesentium esse",
"completed": true,
"color": {
"name": "Green"
}
}
}
Khi không tìm thấy todo để update sẽ báo lỗi (status code 404)
{
"message": "Todo not found."
}
DELETE: localhost:8000/api/todos/{id}
Kết quả trả về khi xóa thành công (status code 200)
{
"data": {
"id": 1,
"text": "Dicta atque optio praesentium esse",
"completed": true,
"color": {
"name": "Green"
}
}
}
Khi không tìm thấy todo để update sẽ báo lỗi (status code 404)
{
"message": "Todo not found."
}
- Param
ids
giá trị string[1,2,3]
Nếu param ids
được đưa vào sai định dạng, sẽ nhận thông báo sau (status code 404)
{
"message": "No todos were marked as completed."
}
Nếu không có param được đưa vào, tất cả những todo sẽ được mark với thông báo sau (status code 200)
{
"message": "7 todo(s) were marked as completed."
}
- Param
ids
giá trị string[1,2,3]
Nếu param ids
được đưa vào sai định dạng, sẽ nhận thông báo sau (status code 404)
{
"message": "No todos were cleared."
}
Nếu không có param được đưa vào, tất cả những todo sẽ được mark với thông báo sau (status code 200)
{
"message": "9 todo(s) were cleared."
}
- GET: localhost:8000/api/colors
- POST: localhost:8000/api/colors
- param: name="Black"
- GET: localhost:8000/api/colors/{id}
- PUT: localhost:8000/api/colors/{id}
- param: name="Black"
- DELETE: localhost:8000/api/colors/{id}