Python E-Commerce API 開発のベスト プラクティス

1. はじめに

北京で最も地中海料理のレストランにチェックインするとき、レストランで食事を注文すると、ウェイターは利用可能なすべての料理と飲み物をリストしたメニューを渡します。メニューから希望の食べ物と飲み物を選択し、ウェイターに選択を伝えることができました。ウェイターは私たちの選択に応じて食べ物や飲み物を準備し、提供します。これは、アプリケーションがインターフェイスを使用して他のアプリケーションと対話するようなものです。コンピューター プログラミングにおけるインターフェイスは、さまざまな機能やサービスをリストしたメニューのようなものです。アプリケーションはインターフェイスを使用して、必要なデータを取得したり、必要な操作を実行したりできます。私たちがレストランで食べ物を注文するとき、食べたい食べ物や飲み物を選ぶのと同じように、アプリケーションもインターフェースから必要なサービスや機能を選択し、対応する操作を実行することができます。

WeChat ミニ プログラムを使用するとき、実際には WeChat ミニ プログラムのインターフェイスを使用して、必要なデータを取得し、必要な操作を実行します。たとえば、WeChat アプレットで天気予報を確認する場合、アプレットは天気予報 API を使用して最新の天気情報を取得し、アプレットに表示します。

 

 1. APIとは何ですか

API、正式名称はApplication Programming Interface、つまりアプリケーションプログラミングインターフェースです。これは、ソフトウェア コンポーネント間の対話を定義する一連のプロトコル、インターフェイス、およびツール セットであり、ソフトウェア システムが相互に通信および対話できるようにするため、開発者は他のアプリケーションの機能やデータを独自のアプリケーションで使用できます。開発効率の向上とプログラムの機能増加。平たく言えば、API は 2 つのソフトウェア間の対話の架け橋です。

 2. API が必要な理由

データの管理と制御の向上: API はアクセス制御を実装し、許可されたユーザーまたは APP のみがアクセスできるようにします。データ暗号化。HTTPS プロトコルを使用してデータ送信を暗号化し、第三者によるデータの盗難や悪意のある攻撃を防ぎます。データのアクセス時間を監視し、アクセスを監査して悪用を防ぎます。これらのセキュリティ機能は、開発者や企業が潜在的な脅威や攻撃からデータを保護し、データの整合性と機密性を向上させるのに役立ちます。

アプリケーションの開発と展開の迅速化: API を使用すると、開発者は既存のコードとツールを活用して、アプリケーションの開発と展開のプロセスを高速化できます。これにより、開発者は日常的な機能の実装に多くの時間を費やすことなく、アプリケーションの中核となるビジネス ロジックに集中できるようになります。たとえば、Alipay と WeChat Pay の API を使用すると、販売者は Alipay と WeChat Pay を自社の電子商取引 Web サイトに統合できます。これにより、販売者は、機能の実装の詳細を考慮することなく、支払い機能を直接使用できるようになります。

顧客のニーズへの対応の向上: API を使用することで、開発者は顧客のニーズに迅速に対応し、より良いユーザー エクスペリエンスを提供できます。API は、顧客のニーズを満たすために、より多くの機能とデータを提供できます。

 3. API開発の基本手順

eCommerce APIの要件と機能(入力、出力、リクエスト タイプなど)を決定します。

プログラミング言語とフレームワークを選択する: ニーズに基づいて、適切なプログラミング言語とフレームワークを選択します。一般的に使用される言語には Python、Java、C# などが含まれ、一般的に使用されるフレームワークには Flask、Django、Express などが含まれます。

データ構造:JSON形式、XML形式などを含む。

ビジネス ロジック: 要件に従って、対応するビジネス ロジック コードを記述します。

ルーティングとリクエスト処理ロジック: リクエスト タイプとリクエスト パスに従って、ルーティングとリクエスト処理ロジックを記述します。

セキュリティと認証: key、access_id

API ドキュメントとテストを作成する: API ドキュメントとテスト ケースを作成して、API の正確さと使いやすさを確認します。

API のデプロイ: 他のアプリケーションで使用できるようにクラウドまたはサーバーにデプロイします。

 4. 命名規則

API の設計と実装は、適切な命名規則など、いくつかのベスト プラクティスに従う必要があることに注意してください。API の命名規則は、特定のプロジェクトおよび開発チームの合意によって異なる場合がありますが、一般的な命名規則の一部を次に示します。

 意味のある URI 名を使用する: API の URI は、API によって提供されるリソースまたは機能を説明する必要があります。たとえば、/api/users を使用するとすべてのユーザーを取得できますが、/api/users/123 を使用すると ID 123 の特定のユーザーを取得できます。このような URI 命名により、API の可読性と保守性が向上します。

 HTTP メソッドの名前付けを使用する: API の HTTP メソッドは、実行される操作に関連付ける必要があります。たとえば、GET メソッドを使用してリソースを取得し、POST メソッドを使用してリソースを作成し、PUT メソッドを使用してリソースを更新し、DELETE メソッドを使用してリソースを削除します。このようなメソッドの命名により、API が理解しやすくなり、使いやすくなります。

  命名規則に従う: API は、読みやすさと保守性を向上させるために、一貫した命名規則を使用する必要があります。たとえば、URI コンポーネントとして単語を区切るには小文字とハイフンを使用し、リクエスト パラメーターと応答本文のキーとして単語を区切るにはアンダースコアを使用します。

 動詞を避ける: API の URI は、操作ではなく、リソースまたは関数を説明する必要があります。たとえば、/api/get_users の代わりに /api/users を使用してユーザーを取得できます。

 RESTful 設計スタイルに従う: RESTful は一般的に使用される API 設計スタイルであり、API をリソースのコレクションとしてモデル化し、標準の HTTP メソッドを使用して操作を実行します。RESTful な設計スタイルに従うと、API が理解しやすくなり、使いやすくなります。

結論として、API の名前はシンプルで意味があり、理解しやすく保守しやすいものにする必要があります。上記の命名規則に従うことは、開発者が高品質で使いやすく保守しやすい API を作成するのに役立ちます。

 5. APIエラー処理メカニズム

 API 開発において、エラー処理は非常に重要な部分です。合理的なエラー処理メカニズムにより、API はより堅牢で信頼性が高く、使いやすくなります。一般的な API エラー処理メカニズムは次のとおりです。

HTTPステータスコード:

from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/users/<int:user_id>', methods=['GET'])def get_user(user_id):    # 根据 user_id 获取用户信息    user = get_user_by_id(user_id)
    if user:        # 返回用户信息        return jsonify(user), 200    else:        # 返回错误信息和 404 状态码        return jsonify({'error': 'User not found'}), 404

エラーメッセージ:

from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/users', methods=['POST'])def create_user():    # 获取 POST 请求中的数据    data = request.get_json()
    if not data or 'name' not in data or 'age' not in data:        # 返回错误信息和 400 状态码        return jsonify({'error': 'Name and age are required'}), 400    else:        # 创建用户,并返回用户信息和 201 状态码        user = create_new_user(data['name'], data['age'])        return jsonify(user), 201

ロギング:

import logging
app = Flask(__name__)logging.basicConfig(level=logging.INFO)
@app.route('/users', methods=['GET'])def get_users():    try:        # 获取所有用户信息        users = get_all_users()
        # 返回用户信息        return jsonify(users), 200    except Exception as e:        # 记录错误日志,并返回错误信息和 500 状态码        logging.error('Error occurred: {}'.format(str(e)))        return jsonify({'error': 'Internal server error'}), 500

 API認証:

from flask import Flask, jsonify, requestfrom functools import wraps
app = Flask(__name__)
def authenticate(func):    @wraps(func)    def wrapper(*args, **kwargs):        # 验证客户端身份        auth = request.authorization        if not auth or not check_auth(auth.username, auth.password):            # 返回错误信息和 401 状态码            return jsonify({'error': 'Unauthorized access'}), 401        else:            # 客户端身份验证通过,执行原始函数            return func(*args, **kwargs)    return wrapper
@app.route('/users', methods=['GET'])@authenticatedef get_users():    # 获取所有用户信息    users = get_all_users()    # 返回用户信息    return jsonify(users), 200

制限:

from flask import Flask, jsonify, requestfrom flask_limiter import Limiterfrom flask_limiter.util import get_remote_address
app = Flask(__name__)limiter = Limiter(app, key_func=get_remote_address, default_limits=["10 per minute"])
@app.route('/users', methods=['GET'])@limiter.limit("5 per minute")def get_users():    # 获取所有用户信息    users = get_all_users()
    # 返回用户信息    return jsonify(users), 200

 5.実戦

MySQL データベースを読み取る API を Python で作成します。 

 import mysql.connectorfrom mysql.connector import errorcode
# 连接MySQL数据库try:    cnx = mysql.connector.connect(user='username', password='password',                                  host='localhost', database='database_name')except mysql.connector.Error as err:    if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:        print("用户名或密码错误")    elif err.errno == errorcode.ER_BAD_DB_ERROR:        print("数据库不存在")    else:        print(err)
# 创建光标cursor = cnx.cursor()
# 编写SQL查询语句query = "SELECT * FROM table_name"
# 执行查询语句cursor.execute(query)
# 获取查询结果result = cursor.fetchall()
# 遍历结果并打印for row in result:    print(row)
# 关闭光标和连接,这步很重要,实际操作中一定要记得关闭光标,确保安全关闭数据库连接cursor.close()cnx.close() 

6. 推奨事項

上記は単なる概要であり、API 開発を包括的に理解したい場合は、Python で一般的に使用される API をいくつかお勧めします。

> NumPy: 数値計算用の Python ライブラリ。パンダ: データ分析とデータ操作用。Matplotlib: データ視覚化のための Python ライブラリ。

> Scikit-learn: 機械学習とデータ マイニング用の Python ライブラリ。TensorFlow: 機械学習と深層学習用の Python ライブラリ。

> Keras: 深層学習モデルを迅速に構築するための Python ライブラリ。SQLAlchemy: リレーショナル データベースを操作および管理するための Python ライブラリ。

> Beautiful Soup: Web ページの解析とデータ スクレイピング用の Python ライブラリ。リクエスト: HTTP リクエストとデータ取得のための Python ライブラリ。

> Jupyter Notebook: データ分析と視覚化のための対話型プログラミング環境。

および関連するチュートリアル:

Flask Web 開発入門: https://www.ibm.com/developerworks/cn/opensource/os-cn-flask/index.html

Flask を使用して RESTful API を開発する: https://www.ibm.com/developerworks/cn/opensource/os-cn-flask-restful-api/

Django REST フレームワークの公式ドキュメント: https://www.django-rest-framework.org/

Python API 開発の実践ガイド: https://zhuanlan.zhihu.com/p/76577882

Python での API 開発: https://zhuanlan.zhihu.com/p/38466244

Python を使用して Web API を開発する方法: https://www.twilio.com/blog/how-to-build-a-web-api-with-python

Python での API 設計ガイドライン: https://cloud.google.com/apis/design/

Flask と SQLAlchemy を使用して RESTful API を開発: https://realpython.com/flask-connexion-rest-api/

Python REST API 開発ガイド: https://www.codementor.io/@sagaragarwal94/building-a-basic-restful-api-in-python-58k02xsiq

これらの記事では、Web 開発フレームワークの選択、RESTful API の設計と実装、API セキュリティ、パフォーマンスの最適化など、Python API 開発のあらゆる側面をカバーしています。自分のニーズに応じて、対応する記事を選択して学習し、練習することができます。子どもたちに何かを学んでもらいたい!

おすすめ

転載: blog.csdn.net/onebound_linda/article/details/131844805