低代码/无代码环境下通过 Python REST API 扩展 Autodesk Platform Services 功能

作者:API传播员 · 2025-09-11 · 阅读时间:3分钟
本文详细介绍了如何使用Python创建REST API服务器,并将其集成到Autodesk Platform Services中。通过Flask框架实现JWT令牌生成和SSA令牌获取功能,为低代码/无代码环境提供复杂逻辑支持。包含完整的Python代码示例和cURL调用方法,帮助开发者快速实现API集成。

一. 利用 REST API 扩展低代码/无代码功能

在使用 低代码/无代码 环境创建解决方案时,尽管这些工具可以显著提升开发效率,但有时仍需要实现复杂的编程逻辑。此时,您可以通过在外部实现所需功能,并将其作为 REST API 端点公开,从而在低代码/无代码环境中调用这些功能。

例如,您可以通过这种方式生成 SSA 令牌,以便在 Autodesk Platform Services (APS) 中使用。


二. 配置 Web 应用程序

在完成前期准备后,进入新 Web 应用程序的配置页面,进行以下设置:

1. 定位配置选项

向下滚动页面,找到需要替换的配置或文件位置。

2. 替换文件内容

将文件内容替换为以下 Python 代码:

import jwt, time, requests
from flask import Flask, json, request

app = Flask(__name__)

def generate_jwt_assertion(KEY_ID, PRIVATE_KEY, APS_CLIENT_ID, SSA_OXYGEN_ID, SCOPE):
    return jwt.encode(
        {
            "iss": APS_CLIENT_ID,
            "sub": SSA_OXYGEN_ID,
            "aud": "https://developer.api.autodesk.com/authentication/v2/token",
            "exp": int(time.time()) + 300,
            "scope": SCOPE.split(" ")
        },
        PRIVATE_KEY,
        algorithm="RS256",
        headers={"alg": "RS256", "kid": KEY_ID}
    )

def get_access_token(jwt_assertion, APS_CLIENT_ID, APS_SECRET_ID, scope):
    response = requests.post(
        'https://developer.api.autodesk.com/authentication/v2/token',
        headers={
            "Accept": "application/json",
            "Content-Type": "application/x-www-form-urlencoded"
        },
        data={
            "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer",
            "assertion": jwt_assertion,
            "scope": scope
        },
        auth=(APS_CLIENT_ID, APS_SECRET_ID)
    )
    return response.json()

@app.route("/sastokenjson", methods=["POST"])
def sastokenjson():
    data = request.json
    APS_CLIENT_ID = data['APS_CLIENT_ID']
    APS_SECRET_ID = data['APS_SECRET_ID']
    SSA_OXYGEN_ID = data['SSA_OXYGEN_ID']
    KEY_ID = data['KEY_ID']
    PRIVATE_KEY = data['PRIVATE_KEY']
    scope = data['scope']

    jwt_assertion = generate_jwt_assertion(KEY_ID, PRIVATE_KEY, APS_CLIENT_ID, SSA_OXYGEN_ID, scope)
    access_token = get_access_token(jwt_assertion, APS_CLIENT_ID, APS_SECRET_ID, scope)
    return json.dumps(access_token)

3. 保存与刷新

保存更改后,单击页面刷新按钮,以更新 Web 应用程序的配置。


三. 使用 cURL 调用 REST API

配置完成后,您可以通过 cURL 调用 REST API 获取 SSA 令牌:

curl --request POST \
     --url https://adamthenagy.pythonanywhere.com/sastokenjson \
     --header 'Content-Type: application/json' \
     --data '{
         "APS_CLIENT_ID": "BRbIPA_____JmAjR",
         "APS_SECRET_ID": "your_secret_id",
         "SSA_OXYGEN_ID": "your_oxygen_id",
         "KEY_ID": "your_key_id",
         "PRIVATE_KEY": "your_private_key",
         "scope": "data:read data:write data:create data:search"
     }'

此请求将返回包含访问令牌的 JSON 响应,可用于 APS 的后续 API 调用。


四. 总结

通过以上步骤,您可以成功创建一个基于 Python 的 REST API 服务器,并将其集成到 Autodesk Platform Services 中。这种方法不仅能扩展低代码/无代码环境的功能,还能实现复杂的业务逻辑处理,为企业提供更灵活的开发方案。

原文链接: https://aps.autodesk.com/blog/create-python-rest-api-server