「売却希望価格」が変更になった際、案件名と、いくらからいくらに変更になったのかをLINEなどに通知してくれるシステムの開発

セキュリティやエラーハンドリングを考慮したバージョンのコードを示します。このコードでは、次の点に注意しています。


- **入力検証**: リクエストのデータが正しい形式かどうかを確認。

- **エラーハンドリング**: 例外をキャッチして適切に対応。

- **認証**: 認証トークンの検証。

- **セキュアなデータベース接続**: プレースホルダーを使用したSQLクエリ。

- **ログ**: エラーログを記録。


```python

from flask import Flask, request, jsonify, abort

import psycopg2

from psycopg2 import sql, Error

import requests

import logging


app = Flask(__name__)


# Database connection

DATABASE_URL = "dbname=test user=postgres password=secret host=localhost"

conn = psycopg2.connect(DATABASE_URL)

cur = conn.cursor()


# LINE Messaging API credentials

LINE_ACCESS_TOKEN = 'YOUR_ACCESS_TOKEN'

LINE_API_URL = 'https://api.line.me/v2/bot/message/push'

LINE_USER_ID = 'YOUR_USER_ID' # 固定のユーザーID (または複数ユーザーを管理する場合は適宜対応)


# Logging setup

logging.basicConfig(level=logging.INFO)


def send_line_message(user_id, message):

    headers = {

        'Content-Type': 'application/json',

        'Authorization': f'Bearer {LINE_ACCESS_TOKEN}'

    }

    data = {

        'to': user_id,

        'messages': [{'type': 'text', 'text': message}]

    }

    try:

        response = requests.post(LINE_API_URL, headers=headers, json=data)

        response.raise_for_status()

    except requests.exceptions.RequestException as e:

        logging.error(f'Error sending message: {e}')

        raise


@app.route('/update_price', methods=['POST'])

def update_price():

    if not request.is_json:

        abort(400, description="Invalid input: JSON required")

ここから先は

2,341字

¥ 2,000

期間限定 PayPay支払いすると抽選でお得に!

この記事が気に入ったらサポートをしてみませんか?