0Pricing
AI Agents · レッスン

エージェント開発者のためのREST API基礎

HTTPメソッド、ステータスコード、ヘッダー、JSONのリクエスト/レスポンス形式を学びます。

「エージェント開発者のためのREST API基礎」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。

HTTPリクエストとは

外部サービスに接続するすべてのエージェントは、ウェブの言語であるHTTPを使用します。HTTPリクエストには、3つの主要な要素があります。メソッド、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を使って、ユーザープロフィールの読み取り、タスクリストの取得、設定データの取得などを行います。

params引数を使い、URLのクエリ文字列としてパラメーターを渡せます。

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リクエストにはボディがありません。

削除が成功すると、通常は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を使用します。送信時はrequestsでjson=payloadを使ってください。これにより、シリアライズとヘッダー設定が自動的に行われます。受信時はresponse.json()を呼び出して、ボディをPythonのdictに解析します。

値を参照する前に、期待するキーが存在することを必ず検証してください。

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)

すべてを組み合わせる

適切に記述されたエージェントは、メソッドの選択、適切なヘッダーの設定、ステータスコードの確認、JSONの解析を、整理されたヘルパー関数でAPI呼び出しにまとめます。これにより、すべての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基礎」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。

「エージェント開発者のためのREST API基礎」で何を学びますか?

HTTPメソッド、ステータスコード、ヘッダー、JSONのリクエスト/レスポンス形式を学びます。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Agentsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「エージェント開発者のためのREST API基礎」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Agentsレッスンでコードを書いて実行できますか?

はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. エージェント開発者のためのREST API基礎
  2. 認証:API KeysとOAuth
  3. APIレスポンスとエラーの処理
  4. レート制限とリトライロジック
← AI Agentsに戻る