「売却希望価格」が変更になった際、案件名と、いくらからいくらに変更になったのかを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,000
この記事が気に入ったらサポートをしてみませんか?