ทำ API ดึงราคา Cryptocurrency ง่ายๆ ด้วย Node.js + Puppeteer

NottDev
2 min readJun 6, 2021

--

ในยุคสมัยของ Cryptocurrency กำลังบูมแบบนี้ หลายคนคงสนุกสนาน เพลิดเพลินกับการ Trade กันอยู่และต้องคอยเข้าแอพไปเช็คราคากันบ่อยๆ อาธิเช่นแอพยอดฮิตอย่าง Bitkub, Satang Pro หรือ Binance เป็นต้น บทความนี้จะพาไปทำ API อย่างง่าย โดยเอาความสามารถของ Puppeteer มาดึงข้อมูลราคาหน้าเว็บของ coinmarketcap แล้ว Response กลับเป็นข้อมูล JSON ที่ดูง่ายและสามารถนำไปประยุกต์ใช้งานต่อได้

เอ๊ะ!! แล้วทำไมเราไม่ไปใช้ API ของแต่ละแอพล่ะ จะมาทำท่าพิศดารทำไมให้ยุ่งยากด้วย? ใช่ครับแต่ละแอพเค้ามี API ให้เราใช้อยู่แล้ว แต่นั้นไม่ใช้จุดประสงค์ของบทความนี้ครับ

Purpose หรือจุดประสงค์ของบทความนี้คือ อยากให้ลองนำเทคโนโลยีต่างๆ มาประยุกต์ใช้งาน สมมติว่าเราได้โจทย์ให้นำข้อมูลจากเว็บไซต์หนึ่ง มาคำนวณหรือทำอะไรบางอย่างให้ได้ผลลัพธ์ตามที่ต้องการ แต่เว็บไซต์นั้นกลับไม่มี API ให้เราใช้ แล้วเราจะทำอย่างไร? บทความนี้มีคำตอบครับ :)

บทความนี้ได้ต่อยอดมาจาก 2 บทความนี้ หากใครยังไม่อ่าน แนะนำให้กลับไปอ่านก่อนครับ จะได้เข้าใจพื้นฐาน

  1. ทำ Automation หน้าเว็บด้วย Puppeteer
  2. Deploy Node.js + Puppeteer ด้วย Docker ภายใน 5 นาที

เกริ่นซะนานเลย เข้าเรื่องสักทีเถอะ งั้นเริ่มกันเลย ^^

เริ่มจาก Clone Source Code มา จากนั้นพิมพ์คำสั่งเข้า Project Folder

$ cd nodejs-puppeteer-docker

ต่อมาติดตั้ง Package Dependencies ต่างๆ ด้วยคำสั่ง

$ npm install

จากนั้น พิมพ์คำสั่งเพื่อ Start Server

$ npm run dev
Start Server Success

หรือหากต้องการใช้งานบน 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ดังรูปภาพด้านล่าง

Created Container

จากนั้นทดสอบ Call API ผ่าน Postman: http://localhost:3000/api/v1/puppeteer/get-top10-cryptocurrency-prices/en

lang คือ ภาษาหน้าเว็บไซต์ของ coinmarketcap ซึ่งจะแสดงผลค่าเงินตามภาษานั้นๆที่เลือก เช่น en — Dollar, th — Baht เป็นต้น
เว็บไซต์ coinmarketcap

ผลลัพธ์จากการ Call API ผ่าน Postman จะผลลัพธ์ได้ประมาณนี้

Language en--Currency Dollar
Language th--Currency Baht

จาก Response จะเห็นว่า ได้ข้อมูลครบถ้วนตามที่เราต้องการ (ตรงกับที่หน้าเว็บไซต์ได้แสดงเอาไว้)

coinLogoUrl: รูปไอคอนเหรียญcoinName: ชื่อเหรียญcoinSymbol: สัญลักษณ์ของเหรียญcoinPrice: ราคาเหรียญปัจจุบันprice24H: เปอร์เซ็นค่าเฉลี่ยของราคาใน 24 ชั่วโมงprice7D: เปอร์เซ็นค่าเฉลี่ยของราคาใน 7 วันmarketCap: มูลค่าตามราคาตลาดvolume24H: ปริมาณซื้อขายเหรียญใน 24 ชั่วโมงcirculatingSupply: อุปทานหมุนเวียน
ข้อมูลราคาของเหรียญต่างๆ หน้าเว็บไซต์ coinmarketcap

สุดท้ายนี้ก็หวังว่าจะได้ไอเดียสำหรับการนำ Puppeteer ไปประยุกต์ใช้งานกันน่ะ สำหรับใครสนใจสามารถเอาโค๊ด Source Code ไปลอง deploy เล่นกันได้น่ะครับ สำหรับวันนี้ต้องขอตัวลาไปก่อน สวัสดีครับ ^^

--

--

NottDev
NottDev

Written by NottDev

Your only limit is your mind.

No responses yet