ในยุคสมัยของ Cryptocurrency กำลังบูมแบบนี้ หลายคนคงสนุกสนาน เพลิดเพลินกับการ Trade กันอยู่และต้องคอยเข้าแอพไปเช็คราคากันบ่อยๆ อาธิเช่นแอพยอดฮิตอย่าง Bitkub, Satang Pro หรือ Binance เป็นต้น บทความนี้จะพาไปทำ API อย่างง่าย โดยเอาความสามารถของ Puppeteer มาดึงข้อมูลราคาหน้าเว็บของ coinmarketcap แล้ว Response กลับเป็นข้อมูล JSON ที่ดูง่ายและสามารถนำไปประยุกต์ใช้งานต่อได้
เอ๊ะ!! แล้วทำไมเราไม่ไปใช้ API ของแต่ละแอพล่ะ จะมาทำท่าพิศดารทำไมให้ยุ่งยากด้วย? ใช่ครับแต่ละแอพเค้ามี API ให้เราใช้อยู่แล้ว แต่นั้นไม่ใช้จุดประสงค์ของบทความนี้ครับ
Purpose หรือจุดประสงค์ของบทความนี้คือ อยากให้ลองนำเทคโนโลยีต่างๆ มาประยุกต์ใช้งาน สมมติว่าเราได้โจทย์ให้นำข้อมูลจากเว็บไซต์หนึ่ง มาคำนวณหรือทำอะไรบางอย่างให้ได้ผลลัพธ์ตามที่ต้องการ แต่เว็บไซต์นั้นกลับไม่มี API ให้เราใช้ แล้วเราจะทำอย่างไร? บทความนี้มีคำตอบครับ :)
บทความนี้ได้ต่อยอดมาจาก 2 บทความนี้ หากใครยังไม่อ่าน แนะนำให้กลับไปอ่านก่อนครับ จะได้เข้าใจพื้นฐาน
เกริ่นซะนานเลย เข้าเรื่องสักทีเถอะ งั้นเริ่มกันเลย ^^
เริ่มจาก Clone Source Code มา จากนั้นพิมพ์คำสั่งเข้า Project Folder
$ cd nodejs-puppeteer-docker
ต่อมาติดตั้ง Package Dependencies ต่างๆ ด้วยคำสั่ง
$ npm install
จากนั้น พิมพ์คำสั่งเพื่อ Start Server
$ npm run dev
หรือหากต้องการใช้งานบน docker ก็สามารถทำได้เช่นกัน โดยเริ่มจากสร้างไฟล์ .env โดยสามารถใช้ .env-example เป็นตัวอย่างได้ แล้วกำหนด port สำหรับรัน Server ในเครื่องให้เรียบร้อย (โดย default จะใช้ port 3000)
**(ขณะที่กำลังเขียนบทความนี้ จะยังไม่สามารถใช้งานบน Macbook M1 ได้)
$ mv .env-example .env
จากนั้นพิมพ์คำสั่งสำหรับ สร้าง Container โดยพิมพ์คำสั่ง
$ docker-compose up -d
เมื่อสร้าง Container เรียบร้อยแล้ว จะมีข้อความแสดงว่า “Creating nodejs_puppeteer_server … done” ดังรูปภาพด้านล่าง
จากนั้นทดสอบ Call API ผ่าน Postman: http://localhost:3000/api/v1/puppeteer/get-top10-cryptocurrency-prices/en
- Route: /puppeteer/get-top10-cryptocurrency-prices/:lang
lang คือ ภาษาหน้าเว็บไซต์ของ coinmarketcap ซึ่งจะแสดงผลค่าเงินตามภาษานั้นๆที่เลือก เช่น en — Dollar, th — Baht เป็นต้น
ผลลัพธ์จากการ Call API ผ่าน Postman จะผลลัพธ์ได้ประมาณนี้
จาก Response จะเห็นว่า ได้ข้อมูลครบถ้วนตามที่เราต้องการ (ตรงกับที่หน้าเว็บไซต์ได้แสดงเอาไว้)
coinLogoUrl: รูปไอคอนเหรียญcoinName: ชื่อเหรียญcoinSymbol: สัญลักษณ์ของเหรียญcoinPrice: ราคาเหรียญปัจจุบันprice24H: เปอร์เซ็นค่าเฉลี่ยของราคาใน 24 ชั่วโมงprice7D: เปอร์เซ็นค่าเฉลี่ยของราคาใน 7 วันmarketCap: มูลค่าตามราคาตลาดvolume24H: ปริมาณซื้อขายเหรียญใน 24 ชั่วโมงcirculatingSupply: อุปทานหมุนเวียน
สุดท้ายนี้ก็หวังว่าจะได้ไอเดียสำหรับการนำ Puppeteer ไปประยุกต์ใช้งานกันน่ะ สำหรับใครสนใจสามารถเอาโค๊ด Source Code ไปลอง deploy เล่นกันได้น่ะครับ สำหรับวันนี้ต้องขอตัวลาไปก่อน สวัสดีครับ ^^