Nội dung chính
Tạo Mock API với JSON Server
- Báo cáo
Bài đăng này đã không được update trong 2 nămTrong quy trình tăng trưởng app mobile đôi lúc server lăn đùng ra chết hoặc đường dây mạng trong công ty có yếu tố, bạn phải chờ cho đến khi hồi sinh được server hoặc đường truyền không thay đổi mới hoàn toàn có thể test và code tiếp. Quá tiêu tốn lãng phí thời hạn phải không ? Để xử lý yếu tố này thì tạo mock api chính là giải pháp giúp tất cả chúng ta tránh được việc nhờ vào vào response từ server trả về. Bài viết này sẽ trình làng về JSON Server giúp tất cả chúng ta tạo mock api một cách đơn thuần và nhanh gọn .
Cơ bản
Cài đặt json-server bằng câu lệnh saunpm install -g json-server
Tạo một json database và đặt tên db.json như mẫu dưới đây:
Bạn đang đọc: Mock API là gì
{
"users": [
{
"id": 1,
"userId": 101,
"name": "Alice"
},
{
"id": 2,
"userId": 102,
"name": "Bob"
},
{
"id": 3,
"userId": 103,
"name": "Carol"
}
]
}
Khởi tạo server với database vừa tạojson-server --watch db.json
Bạn đã hoàn toàn có thể request tới server theo link sau :
curl http://localhost:3000/users
Lệnh GET request sẽ trả về tài liệu đã tạo trong file json database. Ta hãy thêm mới tài liệu vào database bằng lệnh POST như sau :
curl -d "userId=104&name=Dan" http://localhost:3000/users
Custom Routes
Nếu bạn muốn tạo những route khác nhau hay tạo package.json như sau :
{
"name": "json-server-test",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"devDependencies": {
"json-server": "^0.14.0"
}
}
và một server.js như sau :
const jsonServer = require('json-server');
const server = jsonServer.create();
const router = jsonServer.router('./db.json');
const middlewares = jsonServer.defaults();
const port = process.env.PORT || 3000;
server.use(middlewares);
server.use(router);
server.listen(port);
Với server.js ta sẽ tạo server, thiết lập database và router và sử dụng default middlewares .
Để lan rộng ra route ta cần thêm rewriter .
server.use(jsonServer.rewriter({
'/api/users': '/users'
}));
POST Routes
Để tuỳ chỉnh route cho lệnh POST ta cần sử dụng bodyParser
server.use(jsonServer.bodyParser)
server.post('/post/user', (req, res) => {
if (req.method === 'POST') {
let userId = req.body['userId'];
if (userId != null && userId >= 0) {
let result = db.users.find(user => {
return user.userId == userId;
})
if (result) {
let {id, ...user} = result;
res.status(200).jsonp(user);
} else {
res.status(400).jsonp({
error: "Bad userId"
});
}
} else {
res.status(400).jsonp({
error: "No valid userId"
});
}
}
});
Như vậy, điểm khác biệt duy nhất ở đây đó là ta lấy body từ request thay vì query. Nếu bạn không sử dụng bodyParse thì phần body sẽ không được định nghĩa curl -d "userId=101" http://localhost:3000/post/user
Kết quả :
Tạo dữ liệu Fake
Phần tạo moke api đã xong, nhưng giả sử bạn cần rất nhiều tài liệu trong database hàng ngàn record ví dụ điển hình. Khi đó, việc tạo tài liệu thủ công bằng tay tỏ ra không hiệu suất cao. Faker sẽ giúp tất cả chúng ta xử lý yếu tố này Cài đặt Faker
npm install --save faker
Tạo và chạy một js như sau
var faker = require('faker');
function generateData () {
var messages = [];
for (var id = 0; id < 10; id++) {
let priority = faker.random.number({min: 1, max: 2});
let date = faker.date.between("2018-01-01", "2018-07-31").toISOString().split("T")[0];
let fromId = faker.random.number({min: 1000, max: 9999})
let message = faker.hacker.phrase();
let status = faker.random.number(1);
messages.push({
"id": id,
"from_userId": fromId,
"date_sent": date,
"priority": priority,
"message": message,
"status": status
});
}
return {messages};
}
module.exports = generateData;
json-server generate-data.js
Xem thêm: Đầu số 028 là mạng gì, ở đâu? Cách nhận biết nhà mạng điện thoại bàn - http://139.180.218.5
Kiểm tra tài liệu vưa tạo bằng lệnh GET
Hosting JSON Server trên Heroku
Ngoài việc lưu server trên máy local bạn trọn vẹn hoàn toàn có thể đưa mock api server của mình lên Heroku https://www.heroku.com/ rất thuận tiện và không tính tiền bằng thông tin tài khoản cá thể
Reference
Bài viêt này được dịch từ https://spin.atomicobject.com/2018/10/08/mock-api-json-server/
Source: http://139.180.218.5
Category: Thuật ngữ đời thường