ในวันที่ต้อง Mock API แบบด่วน ๆ สำหรับทดสอบ Front-end (แต่ Back-end จริง ๆ มันยังอยู่แค่ในร่างออกแบบ) งั้นก็เริ่มกันเลย
เราใช้ json-server เป็นตัวช่วยทำ Mock API ซึ่งก็ตอบโจทย์และเร็วสุดละ สิ่งที่เราต้องทำเพิ่มคือสร้างชุดข้อมูลสำหรับทดสอบเท่านั้นเอง
npm install -g json-server
npm install -g json-server
npm install -g json-server
ส่วนการสร้างชุดข้อมูลก็ใช้ faker.js (เราใช้ lodash เพิ่ม ก็ติดตั้งเข้าไปพร้อมกันเลย)
npm install faker lodash
สร้างชุดข้อมูลแบบ random ด้วยไฟล์ชื่อ generator.js เข้าไป
module.exports = function () {
var faker = require("faker");
var _ = require("lodash");
customers: _.times(Math.floor((Math.random() * 1000) + 1), function (n) {
firstname: faker.name.firstName(),
lastname: faker.name.lastName(),
birthdate: faker.date.past(50, new Date("Sat Sep 20 1992 21:35:02 GMT+0700 (ICT)")),
address: faker.address.streetAddress(),
city: faker.address.city(),
country: faker.address.country(),
email: faker.internet.email(),
avatar: faker.internet.avatar()
// generator.js
module.exports = function () {
var faker = require("faker");
var _ = require("lodash");
return {
customers: _.times(Math.floor((Math.random() * 1000) + 1), function (n) {
return {
id: n+1,
firstname: faker.name.firstName(),
lastname: faker.name.lastName(),
birthdate: faker.date.past(50, new Date("Sat Sep 20 1992 21:35:02 GMT+0700 (ICT)")),
address: faker.address.streetAddress(),
city: faker.address.city(),
country: faker.address.country(),
email: faker.internet.email(),
avatar: faker.internet.avatar()
}
})
}
}
// generator.js
module.exports = function () {
var faker = require("faker");
var _ = require("lodash");
return {
customers: _.times(Math.floor((Math.random() * 1000) + 1), function (n) {
return {
id: n+1,
firstname: faker.name.firstName(),
lastname: faker.name.lastName(),
birthdate: faker.date.past(50, new Date("Sat Sep 20 1992 21:35:02 GMT+0700 (ICT)")),
address: faker.address.streetAddress(),
city: faker.address.city(),
country: faker.address.country(),
email: faker.internet.email(),
avatar: faker.internet.avatar()
}
})
}
}
หลังจากที่เรา Start Server ด้วยคำสั่ง
json-server generator.js
json-server generator.js
ข้อมูลที่เรา generate ขึ้นหน้าตาก็ประมาณนี้

ท้ายสุดเราก็แพ็คลง Container เลย โดยสร้าง Dockerfile ไว้ใช้งานยาว ๆ (เป็นลางว่า Back-end จะยังไม่เสร็จในเร็ววันใช่ไหม 55555)
ENV NPM_CONFIG_LOGLEVEL info
RUN apk add --no-cache tzdata \
&& cp /usr/share/zoneinfo/Asia/Bangkok /etc/localtime \
&& echo "Asia/Bangkok" > /etc/timezone \
&& rm -rf /var/cache/apk/*
# Create application directory
&& npm install -g json-server lodash faker
ENTRYPOINT ["json-server"]
FROM node:10-alpine
LABEL author="mf"
LABEL version="latest"
ENV NPM_CONFIG_LOGLEVEL info
ENV TZ Asia/Bangkok
RUN apk add --no-cache tzdata \
&& cp /usr/share/zoneinfo/Asia/Bangkok /etc/localtime \
&& echo "Asia/Bangkok" > /etc/timezone \
&& rm -rf /var/cache/apk/*
# Create application directory
RUN mkdir -p /data \
&& npm install -g json-server lodash faker
WORKDIR /data
VOLUME [ "/data" ]
EXPOSE 3000
# Default command
ENTRYPOINT ["json-server"]
CMD ["--help"]
FROM node:10-alpine
LABEL author="mf"
LABEL version="latest"
ENV NPM_CONFIG_LOGLEVEL info
ENV TZ Asia/Bangkok
RUN apk add --no-cache tzdata \
&& cp /usr/share/zoneinfo/Asia/Bangkok /etc/localtime \
&& echo "Asia/Bangkok" > /etc/timezone \
&& rm -rf /var/cache/apk/*
# Create application directory
RUN mkdir -p /data \
&& npm install -g json-server lodash faker
WORKDIR /data
VOLUME [ "/data" ]
EXPOSE 3000
# Default command
ENTRYPOINT ["json-server"]
CMD ["--help"]
หลังจาก build Dockerfile แล้วก็ลองรันกันเลย ถ้าไม่ทำอะไรผิดพลาดผลลัพธ์มันก็ควรจะเป็นดังรูป
docker run -d -p 3000:3000 -v `pwd`/app:/data mf/mockup-api --watch generator.js --host 0.0.0.0
docker run -d -p 3000:3000 -v `pwd`/app:/data mf/mockup-api --watch generator.js --host 0.0.0.0
docker run -d -p 3000:3000 -v `pwd`/app:/data mf/mockup-api --watch generator.js --host 0.0.0.0


จบปิ๊งง ^_^