📜  在 Flask 中集成 HAL

📅  最后修改于: 2022-05-13 01:54:27.738000             🧑  作者: Mango

在 Flask 中集成 HAL

超文本应用程序语言 (HAL)是一种标准,用于建立使用 JSON 表达超媒体控件(例如链接)的约定。它被认为是一种通用媒体类型,通过它可以开发 Web API 并将其公开为一系列链接。

在本文中,我们将使用Flask-HAL模块,该模块可用于将 HAL 规范与 Flask 集成。该模块的主要特点是——

  • 轻松集成到 HAL 的结构化格式。
  • 提供 HAL 的大部分功能,包括嵌入式文档、链接和文档。

安装

要安装此模块,请在终端中键入以下命令。

pip install Flask-HAL

使用的功能

  • 文档(数据、链接、嵌入):这是嵌入的文档、链接和相关数据的集合。
  • 嵌入(数据、链接、嵌入):提供有关嵌套资源及其链接的信息。
  • 链接(资源,超链接):包括资源及其关联的超链接和元数据。链接类的类型是 Collection()。

示例 1:链接和文档

安装库后,需要导入HAL、链接和文档类。文档使用数据及其链接进行初始化,链接由资源及其超链接组成。自链接包含在 HAL 文档中。



Python3
from flask import Flask
from flask_hal import HAL, document, link
  
  
# initializing HAL with app context
app = Flask(__name__)
HAL(app)
  
# Links with data in document.
  
  
@app.route('/doc')
def doc():
    return document.Document(data={
        'message': 'Representing Links and Documents for Flask HAL GFG'
    }, links=link.Collection(
        link.Link('gfg', 'https://www.geeksforgeeks.org/'),
        link.Link('practice', 'https://practice.geeksforgeeks.org/')
    ))
  
  
if __name__ == "__main__":
    app.run(debug=True)


Python3
from flask import Flask
from flask_hal import HAL, document, link
from flask_hal.document import Embedded
  
  
# initializing HAL with app context
app = Flask(__name__)
HAL(app)
  
# Links with data in document.
# including embedded.
@app.route('/doc')
def doc():
    return document.Document(data={
        'message': 'Representing Links and Documents for Flask HAL GFG'
    }, links=link.Collection(
        link.Link('gfg', 'https://www.geeksforgeeks.org/'),
        link.Link('practice', 'https://practice.geeksforgeeks.org/')
    ), embedded={
        'nesting': Embedded(
            embedded={'double_nesting': Embedded(
                data={'study': "Its Embedded!"}, links=link.Collection(
                    link.Link(
                        'gfg-embed', 'https://www.geeksforgeeks.org/'),
                    link.Link('practice-embed',
                              'https://practice.geeksforgeeks.org/')
                )
            )})})
  
  
if __name__ == "__main__":
    app.run(debug=True)


输出:转到 URL http://127.0.0.1:5000/doc

HAL 文件

示例 2:使用嵌入式

嵌入式文档与 Document 属于类似的类,只是使用另一个键来定义嵌入式文档的键值。需要导入嵌入式类。

蟒蛇3

from flask import Flask
from flask_hal import HAL, document, link
from flask_hal.document import Embedded
  
  
# initializing HAL with app context
app = Flask(__name__)
HAL(app)
  
# Links with data in document.
# including embedded.
@app.route('/doc')
def doc():
    return document.Document(data={
        'message': 'Representing Links and Documents for Flask HAL GFG'
    }, links=link.Collection(
        link.Link('gfg', 'https://www.geeksforgeeks.org/'),
        link.Link('practice', 'https://practice.geeksforgeeks.org/')
    ), embedded={
        'nesting': Embedded(
            embedded={'double_nesting': Embedded(
                data={'study': "Its Embedded!"}, links=link.Collection(
                    link.Link(
                        'gfg-embed', 'https://www.geeksforgeeks.org/'),
                    link.Link('practice-embed',
                              'https://practice.geeksforgeeks.org/')
                )
            )})})
  
  
if __name__ == "__main__":
    app.run(debug=True)

输出:

嵌入式示例