0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OJT ~ APIを作ってみよう ~

Last updated at Posted at 2025-02-26

はじめに

APIを作ってみましょう!

APIの使い方はこちら

AWS Lambda でシンプルなAPIを作成

Lambda 関数の作成

1.AWS Lambdaコンソールで新しい関数を作成します
2.関数名を入力し、ランタイムとしてPython 3.13を選択します

image.png

3.以下のコードを実装します:

import json

def lambda_handler(event, context):
    # HTTPメソッドを取得
    http_method = event['requestContext']['http']['method']
    
    if http_method == 'GET':
        # クエリパラメータから名前を取得
        query_parameters = event.get('queryStringParameters', {})
        name = query_parameters.get('name') if query_parameters else None
        
        if name:
            # 名前がクエリパラメータにある場合
            return {
                'statusCode': 200,
                'body': json.dumps({
                    'message': f'こんにちは、{name}さん!'
                }, ensure_ascii=False)
            }
        else:
            # 名前がない場合(通常の挨拶)
            return {
                'statusCode': 200,
                'body': json.dumps({
                    'message': 'こんにちは!'
                }, ensure_ascii=False)
            }
    
    elif http_method == 'POST':
        # POSTリクエストの処理
        try:
            # リクエストボディからデータを取得
            body = json.loads(event['body'])
            name = body.get('name', '名無し')
            
            return {
                'statusCode': 200,
                'body': json.dumps({
                    'message': f'こんにちは、{name}さん!'
                }, ensure_ascii=False)
            }
        except:
            return {
                'statusCode': 400,
                'body': json.dumps({
                    'message': 'リクエストボディが不正です'
                }, ensure_ascii=False)
            }
    
    else:
        # サポートしていないHTTPメソッド
        return {
            'statusCode': 405,
            'body': json.dumps({
                'message': 'メソッドはGETまたはPOSTのみサポートしています'
            }, ensure_ascii=False)
        }

テスト実行

1.テストイベントを作成し、以下のJSONを入力します:
image.png

image.png

image.png

{
  "requestContext": {
    "http": {
      "method": "GET"
    }
  },
  "queryStringParameters": {
    "name": "Satoshi"
  }
}

2.テストを実行して、正しくレスポンスが返ることを確認します

関数URLの設定

1.関数URLを作成します
image.png

2.認証タイプは「NONE」を選択します
image.png

3.作成された関数URLをコピーします
image.png

APIの動作確認

ブラウザでの確認

1.関数URLに直接アクセス

image.png

2.クエリパラメータを付けてアクセス(例:?name=Satoshi)

image.png

Pythonから実行

GETリクエスト

import requests


def get_message(name=None):
    # APIのURL
    url = "https://ddorzwnxzqjveigdy6trzz7r5m0ooacy.lambda-url.ap-northeast-1.on.aws/"

    # クエリパラメータの設定
    params = {}
    if name:
        params["name"] = name

    try:
        # GETリクエストを送信(クエリパラメータ付き)
        response = requests.get(url, params=params)

        # レスポンスが正常(200)の場合
        if response.status_code == 200:
            # JSONレスポンスを取得
            data = response.json()
            print(f"受信したメッセージ: {data['message']}")
        else:
            print(f"エラー: ステータスコード {response.status_code}")

    except requests.exceptions.RequestException as e:
        print(f"リクエスト中にエラーが発生しました: {e}")


if __name__ == "__main__":
    # nameパラメータを指定して呼び出す例
    name = input("あなたの名前を入力してください: ")
    get_message(name)

POSTリクエスト

import requests


def post_message(name=None):
    # APIのURL
    url = "https://ddorzwnxzqjveigdy6trzz7r5m0ooacy.lambda-url.ap-northeast-1.on.aws/"

    # POSTリクエストのJSONボディ
    data = {"name": name}
    try:
        # POSTリクエストを送信
        response = requests.post(url, json=data)

        # レスポンスが正常(200)の場合
        if response.status_code == 200:
            # JSONレスポンスを取得
            result = response.json()
            print(f"受信したメッセージ: {result['message']}")
        else:
            print(f"エラー: ステータスコード {response.status_code}")

    except requests.exceptions.RequestException as e:
        print(f"リクエスト中にエラーが発生しました: {e}")


if __name__ == "__main__":
    # nameパラメータを指定して呼び出す例
    name = input("あなたの名前を入力してください: ")
    post_message(name)

まとめ

AWS Lambdaを使用して、シンプルな挨拶を返すAPIを作成しました。GETとPOSTの両方のHTTPメソッドに対応し、名前をパラメータとして受け取ることができます。このAPIは関数URLを通じて直接アクセス可能で、ブラウザやPythonプログラムから簡単に利用できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?