Tag: Fake Store API

  • httr2: 3 ขั้นตอนในการทำงานกับข้อมูลบนเว็บด้วยภาษา R — ตัวอย่างการทำงานกับ Fake Store API

    httr2: 3 ขั้นตอนในการทำงานกับข้อมูลบนเว็บด้วยภาษา R — ตัวอย่างการทำงานกับ Fake Store API

    httr2 (อ่านว่า “hitter 2”) เป็น API (application programming interface) package ในภาษา R เพื่อทำงานกับข้อมูลที่อยู่บนอินเทอร์เน็ต อย่างข้อมูลบนหน้าเว็บไซต์ต่าง ๆ เป็นต้น

    ในบทความนี้ เราจะมาลองดูวิธีใช้ httr2 ผ่านการทำงานกับ Fake Store API ซึ่งมีข้อมูลจำลองของร้านค้าออนไลน์กัน

    ถ้าพร้อมแล้ว ไปเริ่มกันเลย


    1. 🏪 Install & Load httr2
    2. 💻 Working With API in 3 Steps
    3. ✍️ Step 1. Build Request
    4. 📨 Step 2. Send Request
    5. 🧑‍💻 Step 3. Interact With Response
      1. 📋 Check Content Type
      2. 📥 Get Body
      3. 👀 View Data
    6. 📬 POST, PATCH, DELETE
    7. 😺 GitHub
    8. 📃 References
    9. ✅ 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 ขั้นตอน ได้แก่:

    1. Build request: สร้าง request ที่จะส่ง
    2. Send request: ส่ง request ไปยังปลายทาง
    3. Interact with response: ทำงานกับข้อมูลที่ได้รับ

    เราลองไปดูทั้ง 3 ขั้นตอนจากตัวอย่างการดึงข้อมูล products (GET) จาก Fake Store API กัน


    ✍️ Step 1. Build Request

    ในขั้นแรก เราจะสร้าง request ที่เราจะส่งให้กับ Fake Store API:

    1. กำหนด base URL ของ Fake Store API
    2. สร้าง request ด้วย request()
    3. เพิ่ม 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 ที่ได้กลับมากัน:

    1. Check content type: เช็กประเภทข้อมูล
    2. Get body: ดึงข้อมูลจาก response
    3. 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(): ดึงข้อมูลที่เป็น HTML
    • resp_body_xml(): ดึงข้อมูลที่เป็น XML
    • resp_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 กลุ่ม ได้แก่:

    1. req_*() ซึ่งใช้กับ request
    2. resp_*() ซึ่งใช้กับ response

    นอกจาก functions ที่เราได้เห็นก่อนหน้านี้ httr2 ยังมี functions อื่นที่ให้เรียกใช้งานได้ เช่น:

    • req_method(): เปลี่ยน method ของ request
    • req_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


    ✅ 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: