เขียน Python CLI คุย REST API จัดการข้อมูลง่ายๆ

สวัสดีครับ วันนี้ผมจะมาเล่าเรื่องการทำ CLI ด้วย Python ให้เพื่อนๆฟังนะครับ คือบางทีเราอยากได้ข้อมูลจาก API มาดูแบบง่ายๆ ไม่ต้องเปิด Browser หรือ Postman ใช่ไหมครับ แบบนี้เราทำ CLI เล็กๆไว้ดึงข้อมูลแล้วก็เอามาปรับแต่งแสดงผลให้มันดูง่ายๆได้นะครับ เหมาะกับมือใหม่เลย

1. เริ่มจากดึงข้อมูล REST API กันก่อน

แน่นอนว่า Python มันมี library ดีๆ อย่าง requests อยู่แล้วครับ คือใช้ง่ายมากๆเลย ผมจะลองยกตัวอย่าง ดึงข้อมูลจาก Public API ง่ายๆ อย่าง JSONPlaceholder นะครับ

import requests

# ลองดึงโพสต์แรกมาดูครับ
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
post_data = response.json()

print("ข้อมูลโพสต์แรก:")
print(post_data)

จากนั้น ลองคิดว่าเราอยากได้แค่ title กับ body มาแสดงนะครับ เราก็ทำแบบนี้ได้เลย

print(f"Title: {post_data['title'].upper()}") # ลองให้เป็นตัวใหญ่หมด
print(f"Body: {post_data['body'].split('\
')[0]}...") # เอาแค่บรรทัดแรก

2. ทำเป็น CLI ด้วย argparse

คือเราไม่อยากแก้โค้ดทุกครั้งที่อยากเปลี่ยน ID ของโพสต์ใช่ไหมครับ เราก็เอา argparse มาช่วยได้เลยครับ ให้เราสามารถรับค่าจาก command line ได้ง่ายๆ นะครับ

import argparse

parser = argparse.ArgumentParser(description='ดึงข้อมูลโพสต์จาก JSONPlaceholder API.')
parser.add_argument('post_id', type=int, help='ID ของโพสต์ที่ต้องการดึง')

args = parser.parse_args()

# ตรงนี้ก็จะเอา post_id ไปใช้ได้เลย
print(f"กำลังดึงโพสต์ ID: {args.post_id}")

3. รวมร่าง API กับ CLI และ String Manipulation

คราวนี้เราจะเอามารวมกันนะครับ แบบว่า ดึงมาแล้วก็เอา title มาแปลงเป็นตัวใหญ่หมด แล้วก็ body เอาแค่บรรทัดแรกมาแสดง แบบนี้นะครับ

# post_reader.py
import requests
import argparse

def get_post_data(post_id):
    url = f'https://jsonplaceholder.typicode.com/posts/{post_id}'
    try:
        response = requests.get(url, timeout=5) # ใส่ timeout ไว้ด้วยก็ดีนะครับ
        response.raise_for_status() # ถ้ามี error จาก HTTP ก็แจ้งด้วย
        return response.json()
    except requests.exceptions.RequestException as e:
        print(f"มีปัญหาตอนดึงข้อมูล: {e}")
        return None

def main():
    parser = argparse.ArgumentParser(description='ดึงข้อมูลโพสต์จาก JSONPlaceholder API แล้วแสดงผลแบบง่ายๆ')
    parser.add_argument('post_id', type=int, help='ID ของโพสต์ที่ต้องการดึง')

    args = parser.parse_args()

    post = get_post_data(args.post_id)

    if post:
        print(f"Title: {post['title'].upper()}") # แปลงเป็นตัวพิมพ์ใหญ่หมด

        # ตัด body ให้เหลือแค่ประโยคแรก หรือประมาณ 100 ตัวอักษร แล้วค่อยเติม ... นะครับ
        body_content = post['body'].replace('\
', ' ')
        if len(body_content) > 100:
            display_body = body_content[:100] + '...'
        else:
            display_body = body_content

        print(f"Body: {display_body}")
    else:
        print("ไม่พบข้อมูล หรือมีข้อผิดพลาดเกิดขึ้น")

if __name__ == '__main__':
    main()

วิธีใช้งาน:

python post_reader.py 1
python post_reader.py 5

จะเห็นว่าเราได้ CLI ง่ายๆ ที่ใช้ดึงข้อมูลจาก REST API มาแล้วก็จัดฟอร์แมตข้อมูลด้วย string manipulation ครับ คือมันง่ายมากๆ เลยใช่ไหมครับ เพื่อนๆ ก็ลองเอาไปปรับใช้กับ API อื่นๆ ได้เลยนะครับ

หวังว่าบทความนี้จะเป็นประโยชน์กับมือใหม่ทุกคนนะครับ

ขอบคุณครับ

Read more

การคว้าโอกาสท่ามกลางพายุการค้า: ผลกระทบจากการตัดสินใจของศาลสูงสุดสหรัฐฯ และนโยบายภาษีของทรัมป์

การคว้าโอกาสท่ามกลางพายุการค้า: ผลกระทบจากการตัดสินใจของศาลสูงสุดสหรัฐฯ และนโยบายภาษีของทรัมป์

เจาะลึกผลกระทบจากการตัดสินใจของศาลสูงสุดสหรัฐฯ ที่เพิกถอนภาษีทรัมป์ และการประกาศภาษีใหม่ 15% ทั่วโลก ส่งผลอย่างไรต่อเอเชียและตลาดการเงิน พร้อมวิเคราะห์สถานการณ์ล่าสุด.

ตารางคะแนนฟุตบอลพรีเมียร์ลีก 2025-26: เปิดฉาก "ช่วงเวลาแห่งความเป็นความตาย" และบทสรุปจากซูเปอร์คอมพิวเตอร์

ตารางคะแนนฟุตบอลพรีเมียร์ลีก 2025-26: เปิดฉาก "ช่วงเวลาแห่งความเป็นความตาย" และบทสรุปจากซูเปอร์คอมพิวเตอร์

เจาะลึกตารางคะแนนพรีเมียร์ลีก 2025-26 ล่าสุด วิเคราะห์สถานการณ์ลุ้นแชมป์และท็อปโฟร์ พร้อมบทสรุปจากซูเปอร์คอมพิวเตอร์และช่วง "ชนะหรือตาย" ของฟุตบอลยุโรป.

เจาะลึกข่าวหุ้นวันนี้: ถอดรหัสบิ๊กล็อต AOT-F, การพุ่งทะยานของ DELTA และสิ่งที่นักลงทุนควรรู้

เจาะลึกข่าวหุ้นวันนี้: ถอดรหัสบิ๊กล็อต AOT-F, การพุ่งทะยานของ DELTA และสิ่งที่นักลงทุนควรรู้

ในโลกของการลงทุนที่ผันผวนและเต็มไปด้วยโอกาส “ข่าวหุ้น” เปรียบเสมือนเข็มทิศนำทางที่สำคัญสำหรับนักลงทุนทุกคน ไม่ว่าจะเป็นนักลงทุนมือใหม่หรือผู้มากประสบการณ์ การเข้าถึงและทำความเข้าใจข้อมูลข่าวสารที่ถูกต้องและทันท่วงที ถือเป็นกุญแจสำคัญสู่ความสำเร็จในการสร้างผลตอบแทนที

วัน มรณา: จากเน็ตไอดอลกัมพูชาสู่หญิงตั้งครรภ์ในเรือนจำ – ชีวิตที่พลิกผันและอนาคตที่ยังคลุมเครือ

วัน มรณา: จากเน็ตไอดอลกัมพูชาสู่หญิงตั้งครรภ์ในเรือนจำ – ชีวิตที่พลิกผันและอนาคตที่ยังคลุมเครือ

ในยุคที่โซเชียลมีเดียมีอิทธิพลต่อชีวิตของผู้คนอย่างมหาศาล เรื่องราวของบุคคลสาธารณะที่ประสบความสำเร็จอย่างรวดเร็วและตกลงมาอย่างรวดเร็วเช่นกัน มักจะกลายเป็นบทเรียนที่น่าสนใจและเป็นประเด็นถกเถียงในสังคม เรื่องราวของ "วัน มรณา" หรือที่รู้จักกันในนาม "เลิ