httr2 (อ่านว่า “hitter 2”) เป็น API (application programming interface) package ในภาษา R เพื่อทำงานกับข้อมูลที่อยู่บนอินเทอร์เน็ต อย่างข้อมูลบนหน้าเว็บไซต์ต่าง ๆ เป็นต้น
ในบทความนี้ เราจะมาลองดูวิธีใช้ httr2 ผ่านการทำงานกับ Fake Store API ซึ่งมีข้อมูลจำลองของร้านค้าออนไลน์กัน
ถ้าพร้อมแล้ว ไปเริ่มกันเลย
- 🏪 Install & Load httr2
- 💻 Working With API in 3 Steps
- ✍️ Step 1. Build Request
- 📨 Step 2. Send Request
- 🧑💻 Step 3. Interact With Response
- 📬 POST, PATCH, DELETE
- 😺 GitHub
- 📃 References
- ✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา
🏪 Install & Load httr2
ในการใช้งาน httr2 เราจะต้องไม่ลืมติดตั้งและโหลด package ก่อนแบบนี้:
# Install httr2
install.packages("httr2")
# Library httr2
library(httr2)
💻 Working With API in 3 Steps
การใช้งาน httr2 มีอยู่ 3 ขั้นตอน ได้แก่:
- Build request: สร้าง request ที่จะส่ง
- Send request: ส่ง request ไปยังปลายทาง
- Interact with response: ทำงานกับข้อมูลที่ได้รับ
เราลองไปดูทั้ง 3 ขั้นตอนจากตัวอย่างการดึงข้อมูล products (GET) จาก Fake Store API กัน
✍️ Step 1. Build Request
ในขั้นแรก เราจะสร้าง request ที่เราจะส่งให้กับ Fake Store API:
- กำหนด base URL ของ Fake Store API
- สร้าง request ด้วย
request() - เพิ่ม endpoint ใน URL ด้วย
req_url_path_append()
# Define base URL
base_url <- "<https://fakestoreapi.com>"
# Build a request
get_req <- request(base_url) |>
# Add endpoint
req_url_path_append("products")
ในขั้นนี้ request จะยังไม่ถูกส่งออกไป และเราสามารถทดสอบ request ได้ด้วย req_dry_run():
# Dry run the request
get_req |> req_dry_run()
ผลลัพธ์:
GET /products HTTP/1.1
accept: */*
accept-encoding: deflate, gzip
host: fakestoreapi.com
user-agent: httr2/1.1.2 r-curl/6.4.0 libcurl/8.14.1
📨 Step 2. Send Request
เมื่อเราพอใจกับผลทดสอบ เราสามารถส่ง request ออกไปได้ด้วย req_perform():
# Perform the request
get_resp <- get_req |> req_perform()
เราสามารถเช็กสถานะของ response ได้ด้วย resp_status():
# View response status
get_resp |> resp_status()
ผลลัพธ์:
200
ซึ่งแสดงให้เห็นว่า request ของเราส่ง response กลับมาได้สำเร็จ
🧑💻 Step 3. Interact With Response
ในขั้นสุดท้าย เราจะสำรวจ response ที่ได้กลับมากัน:
- Check content type: เช็กประเภทข้อมูล
- Get body: ดึงข้อมูลจาก response
- View data: ดูตัวอย่างข้อมูล
.
📋 Check Content Type
เราสามารถเช็กประเภทข้อมูลใน response ได้ด้วย resp_content_type():
# Check the response content type
get_resp |> resp_content_type()
ผลลัพธ์:
"application/json"
ซึ่งแสดงให้เห็นว่า สิ่งที่ได้รับกลับมาอยู่ในรูปแบบ JSON
.
📥 Get Body
จากนั้น เราสามารถดึงข้อมูลจาก response ได้ด้วย resp_body_*() เช่น:
resp_body_html(): ดึงข้อมูลที่เป็น HTMLresp_body_xml(): ดึงข้อมูลที่เป็น XMLresp_body_json(): ดึงข้อมูลที่เป็น JSON
อย่างในตัวอย่าง เราจะดึงข้อมูลด้วย resp_body_json() เพราะข้อมูลของเราเป็น JSON:
# Extract the content
products <- get_resp |> resp_body_json()
.
👀 View Data
สุดท้าย เราสามารถดูตัวอย่างข้อมูลได้ด้วย head():
# View the first entry
head(products, n = 1)
ผลลัพธ์:
[[1]]
[[1]]$id
[1] 1
[[1]]$title
[1] "Fjallraven - Foldsack No. 1 Backpack, Fits 15 Laptops"
[[1]]$price
[1] 109.95
[[1]]$description
[1] "Your perfect pack for everyday use and walks in the forest. Stash your laptop (up to 15 inches) in the padded sleeve, your everyday"
[[1]]$category
[1] "men's clothing"
[[1]]$image
[1] "<https://fakestoreapi.com/img/81fPKd-2AYL._AC_SL1500_.jpg>"
[[1]]$rating
[[1]]$rating$rate
[1] 3.9
[[1]]$rating$count
[1] 120
📬 POST, PATCH, DELETE
จากตัวอย่าง เราจะเห็นได้ว่า functions ของ httr2 แบ่งเป็น 2 กลุ่ม ได้แก่:
req_*()ซึ่งใช้กับ requestresp_*()ซึ่งใช้กับ response
นอกจาก functions ที่เราได้เห็นก่อนหน้านี้ httr2 ยังมี functions อื่นที่ให้เรียกใช้งานได้ เช่น:
req_method(): เปลี่ยน method ของ requestreq_body_json(): เปลี่ยน body ของ request
ยกตัวอย่างเช่น เราต้องการเปลี่ยน method เป็น POST เพื่อสร้าง product ใหม่บนหน้าเว็บ เราสามารถใช้ req_method() และ req_body_json() ได้แบบนี้:
# Build a request
post_req <- request(base_url) |>
# Add endpoint
req_url_path_append("products") |>
# Change method to POST
req_method("POST") |>
# Add body
req_body_json(list(
title = "Summer Sunglasses",
price = 29.99,
description = "One pair for all summers.",
image = "<https://unsplash.com/photos/sunglasses-beside-a-purse-LJqRUWr9V0w>",
category = "Accessory"
))
หรือ PATCH เพื่ออัปเดตข้อมูล product:
# Build a request
patch_req <- request(base_url) |>
# Add endpoint
req_url_path_append("products/1001") |>
# Change method to PATCH
req_method("PATCH") |>
# Add body
req_body_json(list(
price = 59.99,
description = "Limited edition: One pair for all summers."
))
หรือ DELETE เพื่อลบ product ออก:
# Build a request
delete_req <- request(base_url) |>
# Add endpoint
req_url_path_append("products/1001") |>
# Change method to DELETE
req_method("DELETE")
เป็นต้น
สำหรับคนที่สนใจ สามารถศึกษา functions อื่น ๆ ของ httr2 เพิ่มเติมได้ที่ บทความ official ของ httr2
😺 GitHub
ดูตัวอย่าง code ทั้งหมดได้ที่ GitHub
📃 References
- httr2
- httr2 1.0.0
- How to work with APIs using R (httr2 package tutorial)
- How to Get Data From APIs with R & {httr2} | Ultimate Step-By-Step Tutorial
✅ R Book for Psychologists: หนังสือภาษา R สำหรับนักจิตวิทยา
📕 ขอฝากหนังสือเล่มแรกในชีวิตด้วยนะครับ 😆
🙋 ใครที่กำลังเรียนจิตวิทยาหรือทำงานสายจิตวิทยา และเบื่อที่ต้องใช้ software ราคาแพงอย่าง SPSS และ Excel เพื่อทำข้อมูล
💪 ผมขอแนะนำ R Book for Psychologists หนังสือสอนใช้ภาษา R เพื่อการวิเคราะห์ข้อมูลทางจิตวิทยา ที่เขียนมาเพื่อนักจิตวิทยาที่ไม่เคยมีประสบการณ์เขียน code มาก่อน
ในหนังสือ เราจะปูพื้นฐานภาษา R และพาไปดูวิธีวิเคราะห์สถิติที่ใช้บ่อยกัน เช่น:
- Correlation
- t-tests
- ANOVA
- Reliability
- Factor analysis
🚀 เมื่ออ่านและทำตามตัวอย่างใน R Book for Psychologists ทุกคนจะไม่ต้องพึง SPSS และ Excel ในการทำงานอีกต่อไป และสามารถวิเคราะห์ข้อมูลด้วยตัวเองได้ด้วยความมั่นใจ
แล้วทุกคนจะแปลกใจว่า ทำไมภาษา R ง่ายขนาดนี้ 🙂↕️
👉 สนใจดูรายละเอียดหนังสือได้ที่ meb:

Leave a comment