0Pricing
AI Agents · บทเรียน

พื้นฐาน REST API สำหรับนักพัฒนาตัวแทน

เมธอด HTTP รหัสสถานะ ส่วนหัว และรูปแบบคำขอ/การตอบกลับ JSON

พื้นฐาน REST API สำหรับนักพัฒนาตัวแทน เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คำขอ HTTP คืออะไร

เอเจนต์ทุกตัวที่เชื่อมต่อกับบริการภายนอกใช้ HTTP ซึ่งเป็นภาษาของเว็บ คำขอ HTTP มีองค์ประกอบสำคัญสามส่วน ได้แก่ เมธอด URL และ ส่วนหัวกับเนื้อหาที่เป็นทางเลือก

ลองนึกว่าเมธอดเป็นคำกริยาที่บอกเซิร์ฟเวอร์ว่าคุณต้องการทำอะไร และ URL เป็นที่อยู่ของทรัพยากร

import requests

# A simple GET request to a public API
response = requests.get('https://api.example.com/users')
print(response.status_code)  # 200
print(response.text)          # raw JSON string

GET — การดึงข้อมูล

GET ใช้ดึงข้อมูลจากเซิร์ฟเวอร์ และไม่ควรแก้ไขสิ่งใด เอเจนต์ใช้ GET เพื่ออ่านโพรไฟล์ผู้ใช้ ดึงรายการภารกิจ หรือเรียกข้อมูลการกำหนดค่า

คุณสามารถส่งพารามิเตอร์ใน URL เป็น สตริงคำค้น โดยใช้ข้อโต้แย้ง params

import requests

# Fetch users filtered by role
params = {'role': 'admin', 'page': 1, 'limit': 10}
response = requests.get(
    'https://api.example.com/users',
    params=params
)
# URL becomes: /users?role=admin&page=1&limit=10
data = response.json()
print(data['users'])

POST — การสร้างทรัพยากร

POST ส่งข้อมูลไปยังเซิร์ฟเวอร์เพื่อสร้างทรัพยากรใหม่ เอเจนต์ใช้ POST เพื่อส่งภารกิจ ส่งข้อความ หรือเรียกใช้การดำเนินการ ข้อมูลจะอยู่ใน เนื้อหาคำขอ ในรูปแบบ JSON

โปรดกำหนดส่วนหัว Content-Type: application/json เสมอ เพราะ API ส่วนใหญ่จำเป็นต้องใช้ส่วนหัวนี้

import requests
import json

payload = {
    'title': 'Research competitors',
    'assignee': 'agent-001',
    'priority': 'high'
}

response = requests.post(
    'https://api.example.com/tasks',
    json=payload  # sets Content-Type automatically
)
print(response.status_code)  # 201 Created
new_task = response.json()
print('Created task ID:', new_task['id'])

PUT และ PATCH — การอัปเดตข้อมูล

PUT แทนที่ทรัพยากรทั้งหมดด้วยข้อมูลใหม่ ส่วน PATCH จะอัปเดตเฉพาะฟิลด์ที่ระบุ เอเจนต์ใช้ PUT เมื่อมีออบเจ็กต์ที่อัปเดตครบถ้วน และใช้ PATCH สำหรับการเปลี่ยนแปลงบางส่วน เช่น การอัปเดตสถานะของภารกิจ

import requests

task_id = '42'

# PATCH: only update the status field
response = requests.patch(
    f'https://api.example.com/tasks/{task_id}',
    json={'status': 'completed'}
)
print(response.status_code)  # 200

# PUT: replace the whole task object
full_task = {
    'title': 'Research competitors',
    'assignee': 'agent-001',
    'priority': 'low',
    'status': 'completed'
}
response = requests.put(
    f'https://api.example.com/tasks/{task_id}',
    json=full_task
)
print(response.status_code)  # 200

DELETE — การลบทรัพยากร

DELETE ลบทรัพยากรออกจากเซิร์ฟเวอร์ เอเจนต์ใช้ DELETE เพื่อล้างข้อมูลชั่วคราว ลบภารกิจที่ประมวลผลแล้ว หรือยกเลิกงานที่กำหนดเวลาไว้ คำขอ DELETE ส่วนใหญ่ไม่มีเนื้อหา

โดยทั่วไปการดำเนินการ delete ที่สำเร็จจะส่งคืน 204 No Content ซึ่งหมายความว่าไม่มีเนื้อหาในคำตอบ

import requests

task_id = '42'

response = requests.delete(
    f'https://api.example.com/tasks/{task_id}'
)

if response.status_code == 204:
    print('Task deleted successfully')
elif response.status_code == 404:
    print('Task not found — already deleted?')
else:
    print('Unexpected status:', response.status_code)

รหัสสถานะ: สำเร็จช่วง 2xx

รหัสสถานะจะบอกเอเจนต์ว่าคำขอสำเร็จหรือล้มเหลว ช่วง 2xx หมายถึงสำเร็จ:

  • 200 OK — GET/PUT/PATCH ส่งข้อมูลกลับมา
  • 201 Created — POST สร้างทรัพยากรใหม่
  • 204 No Content — DELETE สำเร็จ และไม่มีเนื้อหาส่งกลับมา

โปรดตรวจสอบรหัสสถานะก่อนประมวลผลเนื้อหาคำตอบเสมอ

import requests

response = requests.post(
    'https://api.example.com/tasks',
    json={'title': 'New task'}
)

if response.status_code == 201:
    task = response.json()
    print('Created:', task['id'])
elif response.status_code == 200:
    print('Updated existing resource')
else:
    print('Unexpected code:', response.status_code)

รหัสสถานะ: ข้อผิดพลาดฝั่งไคลเอนต์ช่วง 4xx

ข้อผิดพลาด 4xx หมายความว่าเอเจนต์ส่งคำขอที่ไม่ถูกต้อง ข้อผิดพลาดที่พบบ่อยมีดังนี้:

  • 400 Bad Request — JSON ไม่ถูกต้องหรือไม่มีฟิลด์ที่จำเป็น
  • 401 Unauthorized — ไม่มีคีย์ API หรือคีย์ไม่ถูกต้อง
  • 404 Not Found — ไม่มีทรัพยากรดังกล่าว
  • 429 Too Many Requests — เกินขีดจำกัดอัตราการส่งคำขอ

กรณีเหล่านี้กำหนดให้เอเจนต์แก้ไขคำขอ ไม่ใช่ลองใหม่โดยไม่ตรวจสอบ

import requests

response = requests.get(
    'https://api.example.com/tasks/9999',
    headers={'Authorization': 'Bearer YOUR_KEY'}
)

if response.status_code == 401:
    print('AUTH ERROR: Check your API key')
elif response.status_code == 404:
    print('Task not found')
elif response.status_code == 429:
    retry_after = response.headers.get('Retry-After', 60)
    print(f'Rate limited. Wait {retry_after}s')
elif response.status_code == 400:
    print('Bad request:', response.json().get('error'))

รหัสสถานะ: ข้อผิดพลาดฝั่งเซิร์ฟเวอร์ช่วง 5xx

ข้อผิดพลาด 5xx หมายความว่าเกิดสิ่งผิดพลาดฝั่งเซิร์ฟเวอร์ เอเจนต์ของคุณไม่ได้ทำอะไรผิด ข้อผิดพลาดที่พบบ่อยมีดังนี้:

  • 500 Internal Server Error — ข้อบกพร่องหรือการหยุดทำงานของเซิร์ฟเวอร์
  • 502 Bad Gateway — บริการต้นทางล้มเหลว
  • 503 Service Unavailable — เซิร์ฟเวอร์มีภาระมากเกินไปหรือหยุดให้บริการ

กรณีเหล่านี้สามารถลองใหม่ได้อย่างปลอดภัยหลังจากรอสักครู่

import requests
import time

def get_with_retry(url, headers, max_retries=3):
    for attempt in range(max_retries):
        response = requests.get(url, headers=headers)
        if response.status_code < 500:
            return response  # success or client error
        wait = 2 ** attempt
        print(f'Server error {response.status_code}, retrying in {wait}s...')
        time.sleep(wait)
    return response  # return last response after retries

ส่วนหัวของคำขอ

ส่วนหัวจะส่งข้อมูลเมทาดาทาไปพร้อมกับทุกคำขอ ส่วนหัวที่สำคัญที่สุดสำหรับเอเจนต์มีดังนี้:

  • Content-Type: application/json — บอกเซิร์ฟเวอร์ว่าเนื้อหาคำขอเป็น JSON
  • Authorization: Bearer TOKEN — ยืนยันตัวตนของคำขอ
  • Accept: application/json — บอกเซิร์ฟเวอร์ว่าคุณคาดว่าจะได้รับ JSON กลับมา
  • User-Agent — ระบุไคลเอนต์ของคุณ (API บางแห่งจำเป็นต้องใช้)
import requests

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer sk-proj-abc123xyz',
    'Accept': 'application/json',
    'User-Agent': 'MyAgent/1.0'
}

response = requests.post(
    'https://api.example.com/analyze',
    headers=headers,
    json={'text': 'Analyze this document'}
)

print(response.json())

เนื้อหาคำขอและคำตอบในรูปแบบ JSON

API สมัยใหม่ส่วนใหญ่แลกเปลี่ยนข้อมูลในรูปแบบ JSON ขณะส่งข้อมูล ให้ใช้ json=payload ในคำขอ (ระบบจะจัดรูปแบบข้อมูลและกำหนดส่วนหัวให้อัตโนมัติ) ขณะรับข้อมูล ให้เรียกใช้ response.json() เพื่อแยกวิเคราะห์เนื้อหาเป็นดิกชันนารีของ Python

โปรดตรวจสอบว่าคีย์ที่คาดไว้มีอยู่จริงก่อนเข้าถึงคีย์เหล่านั้นเสมอ

import requests

# Send JSON body
response = requests.post(
    'https://api.example.com/summarize',
    json={
        'content': 'Long article text here...',
        'max_length': 150,
        'format': 'bullet_points'
    }
)

# Parse JSON response
result = response.json()

# Always check keys exist
summary = result.get('summary', 'No summary returned')
tokens_used = result.get('usage', {}).get('total_tokens', 0)

print('Summary:', summary)
print('Tokens used:', tokens_used)

รวมทุกอย่างเข้าด้วยกัน

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

ใช้ ออบเจ็กต์ Session เพื่อใช้การเชื่อมต่อซ้ำและแบ่งปันส่วนหัวระหว่างคำขอหลายรายการ

import requests

class APIClient:
    def __init__(self, base_url, api_key):
        self.base_url = base_url
        self.session = requests.Session()
        self.session.headers.update({
            'Authorization': f'Bearer {api_key}',
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        })

    def get(self, path, params=None):
        r = self.session.get(f'{self.base_url}{path}', params=params)
        r.raise_for_status()
        return r.json()

    def post(self, path, payload):
        r = self.session.post(f'{self.base_url}{path}', json=payload)
        r.raise_for_status()
        return r.json()

# Usage
client = APIClient('https://api.example.com', 'sk-proj-abc123')
tasks = client.get('/tasks', params={'status': 'open'})
new_task = client.post('/tasks', {'title': 'Write report'})

ตรวจสอบความเข้าใจอย่างรวดเร็ว: เมธอด HTTP

ทดสอบความเข้าใจของคุณเกี่ยวกับเมธอด HTTP และรหัสสถานะ

สรุปพื้นฐาน HTTP

ตอนนี้คุณรู้พื้นฐาน HTTP ที่เอเจนต์ทุกตัวต้องพึ่งพาแล้ว:

  • GET ดึงข้อมูล, POST สร้าง, PUT/PATCH อัปเดต และ DELETE ลบ
  • 2xx = สำเร็จ, 4xx = เป็นความผิดของเอเจนต์, 5xx = เป็นความผิดของเซิร์ฟเวอร์
  • ส่วนหัวส่งข้อมูลยืนยันตัวตน (Authorization: Bearer) และรูปแบบข้อมูล (Content-Type: application/json)
  • ใช้ response.json() เพื่อแยกวิเคราะห์เนื้อหา และใช้ .get() เพื่อเข้าถึงฟิลด์อย่างปลอดภัย
  • ออบเจ็กต์ Session ใช้ส่วนหัวและการเชื่อมต่อร่วมกันระหว่างคำขอต่าง ๆ

เมื่อพื้นฐานเหล่านี้แน่นแล้ว คุณจะสามารถเชื่อมต่อเอเจนต์กับ REST API ใด ๆ ได้อย่างมั่นใจ

คำถามที่พบบ่อย

บทเรียน “พื้นฐาน REST API สำหรับนักพัฒนาตัวแทน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พื้นฐาน REST API สำหรับนักพัฒนาตัวแทน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน REST API สำหรับนักพัฒนาตัวแทน”

เมธอด HTTP รหัสสถานะ ส่วนหัว และรูปแบบคำขอ/การตอบกลับ JSON คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “พื้นฐาน REST API สำหรับนักพัฒนาตัวแทน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พื้นฐาน REST API สำหรับนักพัฒนาตัวแทน
  2. การยืนยันตัวตน: คีย์ API และ OAuth
  3. การจัดการการตอบกลับและข้อผิดพลาดของ API
  4. การจำกัดอัตราและตรรกะการลองใหม่
← กลับไปที่ AI Agents