Heim >Backend-Entwicklung >Python-Tutorial >So verwenden Sie Python Flask RESTful

So verwenden Sie Python Flask RESTful

王林
王林nach vorne
2023-04-29 19:49:121573Durchsuche

1. Überblick über RESTful

REST (Representational State Transfer) ist ein ressourcenorientierter Designstil für Webanwendungen, der einigen Designprinzipien folgt, um Webanwendungen eine gute Lesbarkeit, Skalierbarkeit und Wartbarkeit zu verleihen. Lassen Sie uns jeden Aspekt des RESTful-Stils im Detail erklären:

  • Ressourcenbezeichner: Im RESTful-Stil hat jede Ressource einen eindeutigen Bezeichner, normalerweise eine URL (Uniform Resource Locator) . Eine URL wird verwendet, um den Standort einer Ressource zu identifizieren, damit Clients über das HTTP-Protokoll darauf zugreifen können. Eine einfache URL kann beispielsweise wie folgt lauten: http://example.com/products/123, wobei "products" den Ressourcentyp und "123" darstellt. stellt die Ressourcenkennung dar. <code>URL(Uniform Resource Locator)。URL 用于标识资源的位置,使得客户端可以使用 HTTP 协议进行访问。例如,一个简单的 URL 可以是:http://example.com/products/123,其中“products”表示资源类型,“123”表示资源标识符。

  • 表示层:资源可以以不同的格式表示,例如 JSONXMLHTML 等。客户端可以根据需要选择适当的表示形式进行交互。例如,一个 RESTful API 可以返回 JSON 格式的数据,以便客户端可以更容易地解析和处理数据。

  • 自描述消息:每个消息都应该包含足够的信息,以描述如何处理该消息。例如,HTTP 响应应该包含状态码、响应头和响应正文等信息,以便客户端可以理解响应的含义。

  • 无状态通信RESTful 风格的设计强调无状态通信,这意味着每个请求都应该包含所有必要的信息以处理该请求,而不依赖于先前的请求。这可以使得 Web 应用程序更加简单和可扩展,因为服务器不需要保留任何状态信息。

  • 统一接口:所有资源应该通过相同的接口来访问。这意味着客户端可以使用相同的 HTTP 方法(如 GETPOSTPUTDELETE 等)来操作不同类型的资源。这使得 API 更加简单和一致,并且更容易被其他开发者理解和使用。

总之,RESTful 风格的设计使得 Web 应用程序更加灵活、可扩展和易于维护,是一种现代化的 Web 应用程序设计方式。

二、Python 中的 RESTful

Python 可以用于实现 RESTful 风格的 Web 应用程序,通常使用一些 Web 框架来简化开发过程。下面是一些常见的 Python Web 框架:

  • FlaskFlask 是一个简单、轻量级的 Web 框架,可以用来构建 RESTful 风格的 Web 应用程序。它使用 Python 的装饰器语法来定义 HTTP 路由,使得编写 Web 应用程序变得简单和直观。Flask 还提供了扩展机制,使得开发人员可以轻松地添加新的功能,例如数据库访问、表单验证等。

  • DjangoDjango 是一个功能强大、全面的 Web 框架,可以用于构建复杂的 Web 应用程序。它提供了许多内置功能,例如 ORM(对象关系映射)、表单验证、身份验证等,可以使开发人员更快地构建 Web 应用程序。Django 也支持 RESTful 风格的 Web 应用程序开发,可以使用第三方库 Django REST framework 来实现。

  • BottleBottle 是一个轻量级的 Web 框架,它使用 Python 的装饰器语法来定义 HTTP 路由,可以快速构建 RESTful 风格的 Web 应用程序。Bottle 还包含了一些有用的功能,例如模板引擎、数据库访问、静态文件处理等。

  • PyramidPyramid 是一个灵活、高度可定制的 Web 框架,可以用于构建各种类型的 Web 应用程序,包括 RESTful 风格的 Web 应用程序。Pyramid 提供了许多扩展机制,使得开发人员可以轻松地添加新的功能,例如数据库访问、表单验证、身份验证等。

以上框架都支持 RESTful 风格的 Web 应用程序开发,并且都具有各自的优缺点,开发人员可以根据自己的需求选择合适的框架。

三、Flask RESTful API 示例讲解

1)Flask-RESTful 库讲解

Flask-RESTful 是一个基于 Flask 的扩展库,它提供了一些方便的工具来构建 RESTful API。下面是 Flask-RESTful 的一些主要特点和功能:

  • 资源类:Flask-RESTful 提供了一个 Resource 基类,可以用来创建资源。Resource 类包含了 HTTP 方法(GETPOSTPUTDELETE

  • 🎜🎜Präsentationsebene🎜: Ressourcen können in verschiedenen Formaten dargestellt werden, z. B. JSON, XML, HTML usw . Kunden können je nach Bedarf die entsprechende Darstellung auswählen, mit der sie interagieren möchten. Beispielsweise kann eine RESTful API Daten im JSON-Format zurückgeben, damit Clients die Daten einfacher analysieren und verarbeiten können. 🎜🎜🎜🎜Selbstbeschreibende Nachrichten🎜: Jede Nachricht sollte genügend Informationen enthalten, um zu beschreiben, wie mit der Nachricht umzugehen ist. Beispielsweise sollte eine HTTP-Antwort Informationen wie Statuscode, Antwortheader und Antworttext enthalten, damit der Client die Bedeutung der Antwort verstehen kann. 🎜🎜🎜🎜Zustandslose Kommunikation🎜: Das Design im RESTful-Stil betont die zustandslose Kommunikation, was bedeutet, dass jede Anfrage alle notwendigen Informationen zur Bearbeitung der Anfrage enthalten sollte, ohne sich auf frühere Anfragen zu verlassen. Dadurch können Webanwendungen einfacher und skalierbarer werden, da der Server keine Statusinformationen speichern muss. 🎜🎜🎜🎜Einheitliche Schnittstelle🎜: Der Zugriff auf alle Ressourcen sollte über dieselbe Schnittstelle erfolgen. Dies bedeutet, dass Clients dieselben HTTP-Methoden verwenden können (z. B. GET, POST, PUT, DELETE usw .), um verschiedene Arten von Ressourcen zu betreiben. Dadurch wird die API einfacher und konsistenter und für andere Entwickler leichter zu verstehen und zu verwenden. 🎜
🎜Kurz gesagt macht das Design im RESTful-Stil Webanwendungen flexibler, skalierbarer und einfacher zu warten und ist eine moderne Art, Webanwendungen zu entwerfen. 🎜🎜2. RESTful in Python🎜🎜Python kann zur Implementierung von Webanwendungen im RESTful-Stil verwendet werden, wobei normalerweise einige Web-Frameworks verwendet werden, um den Entwicklungsprozess zu vereinfachen. Im Folgenden sind einige gängige Python-Webframeworks aufgeführt: 🎜🎜🎜🎜Flask: Flask ist ein einfaches, leichtes Webframework, das zum Erstellen von Webanwendungen im RESTful-Stil verwendet werden kann. Es verwendet die Decorator-Syntax von Python, um HTTP-Routen zu definieren, wodurch das Schreiben von Webanwendungen einfach und intuitiv wird. Flask bietet außerdem einen Erweiterungsmechanismus, sodass Entwickler problemlos neue Funktionen wie Datenbankzugriff, Formularvalidierung usw. hinzufügen können. 🎜🎜🎜Django: Django ist ein leistungsstarkes und umfassendes Web-Framework, mit dem komplexe Webanwendungen erstellt werden können. Es bietet viele integrierte Funktionen wie ORM (Object Relational Mapping), Formularvalidierung, Authentifizierung usw., die es Entwicklern ermöglichen, Webanwendungen schneller zu erstellen. Django unterstützt auch die Entwicklung von Webanwendungen im RESTful-Stil, die mithilfe der Drittanbieterbibliothek Django REST Framework implementiert werden können. 🎜🎜🎜Bottle: Bottle ist ein leichtes Web-Framework, das die Decorator-Syntax von Python verwendet, um HTTP-Routen zu definieren und schnell eine Webanwendung im RESTful-Stil erstellen kann. Bottle enthält auch einige nützliche Funktionen wie Template Engine, Datenbankzugriff, statische Dateiverarbeitung usw. 🎜🎜🎜Pyramid: Pyramid ist ein flexibles, hochgradig anpassbares Web-Framework, das zum Erstellen verschiedener Arten von Webanwendungen verwendet werden kann, einschließlich Webanwendungen im RESTful-Stil. Pyramid bietet viele Erweiterungsmechanismen, mit denen Entwickler problemlos neue Funktionen hinzufügen können, z. B. Datenbankzugriff, Formularvalidierung, Authentifizierung usw. 🎜🎜Die oben genannten Frameworks unterstützen alle die Entwicklung von Webanwendungen im RESTful-Stil und haben alle ihre eigenen Vor- und Nachteile. Entwickler können das geeignete Framework entsprechend ihren eigenen Anforderungen auswählen. 🎜🎜3. Beispielerklärung für die Flask-RESTful-API🎜

1) Erklärung der Flask-RESTful-Bibliothek

🎜Flask-RESTful ist eine Flask-basierte Erweiterungsbibliothek, die einige praktische Tools zum Erstellen von RESTful-APIs bereitstellt. Hier sind einige der Hauptmerkmale und Funktionen von Flask-RESTful: 🎜🎜🎜🎜🎜Ressourcenklasse🎜: Flask-RESTful stellt eine Ressourcenbasisklasse bereit, die zum Erstellen von Ressourcen verwendet werden kann. Die Resource-Klasse enthält die Verarbeitungslogik von HTTP-Methoden (GET, POST, PUT, DELETE usw.) und stellt einige praktische Methoden für die Bearbeitung von Anfragen und Antworten bereit. 🎜
  • Analyse von Anforderungsparametern: Flask-RESTful stellt eine RequestParser-Klasse zum Parsen von Anforderungsparametern bereit. RequestParser kann Abfrageparameter, Formularparameter, JSON-Parameter usw. automatisch in Python-Typen analysieren und bietet einige Optionen zum Angeben von Parametertypen, Standardwerten, „muss vorhanden“ und anderen Einschränkungen. RequestParser 类,用于解析请求参数。RequestParser 可以自动将查询参数、表单参数、JSON 参数等解析成 Python 类型,并提供了一些选项来指定参数的类型、默认值、必须存在等限制条件。

  • 响应格式化:Flask-RESTful 提供了一个 marshal_with() 装饰器,用于格式化响应数据。marshal_with() 装饰器可以将 Python 对象转换成指定的输出格式(如 JSON、XML 等),并支持指定输出字段、字段类型、嵌套字段等功能。

  • 路由定义: Flask-RESTful 提供了一个 Api 类,用于定义路由和资源的映射关系。Api 类包含了 add_resource()方法,用于将资源类和 URL 路由绑定起来。

  • 异常处理:Flask-RESTful 提供了一些异常类,用于处理 HTTP 请求和响应中的错误。Flask-RESTful 的异常类包括 abortHTTPException 等,可以方便地处理 HTTP 状态码错误信息等。

  • 综上所述,Flask-RESTful 提供了一些方便的工具来简化 RESTful API 的开发。使用 Flask-RESTful 可以快速地定义资源、解析请求参数、格式化响应数据、定义路由和处理异常等,从而提高开发效率并降低出错的风险。

    2)Flask-RESTful 库安装

    要安装 Flask-RESTful 库,可以使用 pip 命令进行安装。在终端中执行以下命令:

    pip3 install flask-restful

    这将会从 PyPI 上下载 Flask-RESTful 库,并安装到本地的 Python 环境中。安装完成后,就可以在代码中导入 flask_restful 模块,使用 Flask-RESTful 提供的功能来构建 RESTful API。

    3)RESTful 示例讲解

    下面是一个简单的 Flask RESTful API 示例,它实现了一个简单的 To-Do List 应用程序:

    from flask import Flask, request
    from flask_restful import Api, Resource, reqparse, fields, marshal_with
    app = Flask(__name__)
    api = Api(app)
    todos = {}
    todo_fields = {
        &#39;id&#39;: fields.Integer,
        &#39;task&#39;: fields.String,
        &#39;status&#39;: fields.Boolean
    }
    class TodoList(Resource):
        @marshal_with(todo_fields)
        def get(self):
            return todos
        @marshal_with(todo_fields)
        def post(self):
            parser = reqparse.RequestParser()
            parser.add_argument(&#39;task&#39;, type=str, help=&#39;Task is required&#39;, required=True)
            args = parser.parse_args()
            todo_id = len(todos) + 1
            todo = {&#39;task&#39;: args[&#39;task&#39;], &#39;status&#39;: False}
            todos[todo_id] = todo
            return todo, 201
    class TodoItem(Resource):
        @marshal_with(todo_fields)
        def get(self, todo_id):
            return todos[todo_id]
        def put(self, todo_id):
            parser = reqparse.RequestParser()
            parser.add_argument(&#39;task&#39;, type=str)
            parser.add_argument(&#39;status&#39;, type=bool)
            args = parser.parse_args()
            todo = todos[todo_id]
            if args[&#39;task&#39;]:
                todo[&#39;task&#39;] = args[&#39;task&#39;]
            if args[&#39;status&#39;]:
                todo[&#39;status&#39;] = args[&#39;status&#39;]
            return todo
        def delete(self, todo_id):
            del todos[todo_id]
            return &#39;&#39;, 204
    api.add_resource(TodoList, &#39;/todos&#39;)
    api.add_resource(TodoItem, &#39;/todos/<int:todo_id>&#39;)
    if __name__ == &#39;__main__&#39;:
        app.run(debug=True)

    启动

    # 配置环境变量
    export FLASK_APP=restful-test.py
    # 启动服务,公开访问需要加上--host=0.0.0.0
    python -m flask run --host=0.0.0.0

    该示例使用 Flask 和 Flask-RESTful 库来实现 To-Do List 应用程序的 RESTful API。下面是一些重要的代码片段的解释:

    • 定义资源:在示例中,有两个资源:TodoList 和 TodoItemTodoList 用于处理所有的 To-Do 任务列表,TodoItem 用于处理单个任务。

    • 定义请求参数:在示例中,我们使用 Flask-RESTful 库的 RequestParser 来解析请求参数。我们定义了 'task' 和 'status' 参数,并使用 add_argument() 方法来指定它们的类型和其他限制条件。

    • 定义响应格式:在示例中,我们使用 Flask-RESTful 库的 marshal_with() 装饰器来定义响应的格式。我们定义了一个名为 todo_fields 的字典,其中包含了 To-Do 任务的 idtask 和 status 字段。

    • 定义请求方法:在示例中,我们使用 Flask-RESTful 库的 Resource 类来定义请求方法。我们实现了 GETPOSTPUT 和 DELETE 方法,用于获取任务列表添加任务更新任务删除任务

    • 添加路由:在示例中,我们使用 Flask-RESTful 库的 Api 类来添加路由。我们使用 add_resource()

    Antwortformatierung: Flask-RESTful bietet einen marshal_with()-Dekorator zum Formatieren von Antwortdaten. marshal_with() Der Dekorator kann Python-Objekte in bestimmte Ausgabeformate (wie JSON, XML usw.) konvertieren und unterstützt Funktionen wie die Angabe von Ausgabefeldern, Feldtypen, verschachtelten Feldern usw.

    Routendefinition

    : Flask-RESTful stellt eine Api-Klasse zum Definieren der Zuordnungsbeziehung zwischen Routen und Ressourcen bereit. Die Api-Klasse enthält die Methode add_resource(), die zum Binden von Ressourcenklassen und URL-Routen verwendet wird.

    Ausnahmebehandlung: Flask-RESTful stellt einige Ausnahmeklassen für die Behandlung von Fehlern in HTTP-Anfragen und -Antworten bereit. Zu den Ausnahmeklassen von Flask-RESTful gehören abort, HTTPException usw., die problemlos HTTP-Statuscodes

    ,

    Fehlermeldungen usw. verarbeiten können.

    So verwenden Sie Python Flask RESTfulZusammenfassend bietet Flask-RESTful einige praktische Tools, um die Entwicklung der RESTful-API zu vereinfachen. Mit Flask-RESTful können Sie schnell Ressourcen definieren, Anforderungsparameter analysieren, Antwortdaten formatieren, Routen definieren, Ausnahmen behandeln usw. und so die Entwicklungseffizienz verbessern und das Fehlerrisiko verringern.

    2) Installation der Flask-RESTful-Bibliothek

    🎜Um die Flask-RESTful-Bibliothek zu installieren, können Sie sie mit dem Befehl pip installieren. Führen Sie den folgenden Befehl im Terminal aus: 🎜
    # GET http://localhost:5000/todos
    curl http://localhost:5000/todos
    🎜Dadurch wird die Flask-RESTful-Bibliothek von PyPI heruntergeladen und in Ihrer lokalen Python-Umgebung installiert. Nachdem die Installation abgeschlossen ist, können Sie das Modul flask_restful in Ihren Code importieren und die von Flask-RESTful bereitgestellten Funktionen verwenden, um eine RESTful-API zu erstellen. 🎜

    3) RESTful-Beispielerklärung

    🎜Das Folgende ist ein einfaches Flask-RESTful-API-Beispiel, das eine einfache To-Do-List-Anwendung implementiert: 🎜
    # POST http://localhost:5000/todos
    curl -XPOST http://localhost:5000/todos -d &#39;task=123&#39;
    curl -XPOST http://localhost:5000/todos -d &#39;{"task":"456"}&#39;  --header "Content-Type: application/json"
    🎜Start🎜
    # GET http://localhost:5000/todos/1
    curl http://localhost:5000/todos/1
    🎜Dieses Beispiel verwendet Flask und die Flask-RESTful-Bibliothek um die RESTful-API für die To-Do-List-Anwendung zu implementieren. Hier werden einige wichtige Codeausschnitte erklärt: 🎜
      🎜🎜🎜Ressourcen definieren🎜: Im Beispiel gibt es zwei Ressourcen: TodoList und TodoItem . TodoList wird zum Verarbeiten aller To-Do-Aufgabenlisten verwendet, und TodoItem wird zum Verarbeiten einer einzelnen Aufgabe verwendet. 🎜🎜🎜🎜🎜Anforderungsparameter definieren🎜: Im Beispiel verwenden wir den RequestParser der Flask-RESTful-Bibliothek, um die Anforderungsparameter zu analysieren. Wir definieren die Parameter 'task' und 'status' und verwenden die Methode add_argument(), um deren Typen und andere Einschränkungen anzugeben. 🎜🎜🎜🎜🎜Definieren Sie das Antwortformat🎜: Im Beispiel verwenden wir den marshal_with()-Dekorator der Flask-RESTful-Bibliothek, um das Format der Antwort zu definieren. Wir definieren ein Wörterbuch mit dem Namen todo_fields, das die id, task und status der To-Do-Aufgabe > enthält Feld. 🎜🎜🎜🎜🎜Definieren Sie die Anforderungsmethode🎜: Im Beispiel verwenden wir die Resource-Klasse der Flask-RESTful-Bibliothek, um die Anforderungsmethode zu definieren. Wir haben die Methoden GET, POST, PUT und DELETE zum 🎜Abrufen der Aufgabenliste🎜 und 🎜Hinzufügen implementiert Aufgaben 🎜, 🎜Aufgaben aktualisieren🎜 und 🎜Aufgaben löschen🎜. 🎜🎜🎜🎜🎜Route hinzufügen🎜: Im Beispiel verwenden wir die Api-Klasse der Flask-RESTful-Bibliothek, um die Route hinzuzufügen. Wir verwenden die Methode add_resource(), um die Klassen TodoList und TodoItem mit den entsprechenden URL-Routen zu binden. 🎜🎜🎜🎜Nachdem Sie das Beispiel ausgeführt haben, können Sie die RESTful-API der To-Do-List-Anwendung verwenden, indem Sie auf die URL zugreifen. Um beispielsweise 🎜 eine Liste aller Aufgaben zu erhalten 🎜, können Sie die folgende URL verwenden: 🎜
      # PUT http://localhost:5000/todos/1
      curl -XPUT http://localhost:5000/todos/1 -d &#39;{"task":"test"}&#39;  --header "Content-Type: application/json"
      # 查看
      curl http://localhost:5000/todos/1
      🎜 Um 🎜 eine neue Aufgabe hinzuzufügen 🎜, können Sie die folgende URL verwenden: 🎜
      # DELETE http://localhost:5000/todos/1
      curl -XDELETE http://localhost:5000/todos/1
      🎜 Um 🎜 eine einzelne Aufgabe zu erhalten 🎜, Sie Sie können die folgende URL verwenden: 🎜rrreee🎜 🎜Um eine Aufgabe zu aktualisieren🎜, können Sie die folgende URL verwenden: 🎜rrreee🎜 Um 🎜eine Aufgabe zu löschen🎜, können Sie die folgende URL verwenden: 🎜rrreee🎜🎜🎜

    Das obige ist der detaillierte Inhalt vonSo verwenden Sie Python Flask RESTful. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen