Python代码做成API接口,并且可以在directx12 3d+vs2022开发中使用

Python-- flask

将 Python 代码做成 API 接口

我们可以使用 Python 的Flask框架来创建一个简单的 API 接口。Flask是一个轻量级的 Web 框架,易于使用和部署。

示例代码

假设你有一个简单的 Python 函数,用于计算两个数的和,以下是将其转换为 API 接口的代码:

from flask import Flask, request, jsonify

app = Flask(__name__)

# 定义一个简单的函数
def add_numbers(a, b):
    return a + b

# 定义API接口
@app.route('/add', methods=['POST'])
def add():
    data = request.get_json()
    a = data.get('a')
    b = data.get('b')
    if a is None or b is None:
        return jsonify({"error": "Missing 'a' or 'b' in request"}), 400
    result = add_numbers(a, b)
    return jsonify({"result": result})

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)
代码解释
  1. 导入必要的库:导入Flaskrequestjsonify
  2. 创建 Flask 应用app = Flask(__name__)
  3. 定义业务函数add_numbers用于计算两个数的和。
  4. 定义 API 接口:使用@app.route装饰器定义一个 POST 请求的接口/add,接收 JSON 数据,提取ab的值,调用add_numbers函数计算结果,并返回 JSON 响应。
  5. 运行应用:使用app.run启动 Flask 应用,监听0.0.0.0:5000

c++ --windows.web.http  windows.data.json  ppltasks

 在 DirectX 12 3D + Visual Studio 2022 开发中使用 API 接口

在 Visual Studio 2022 中开发 DirectX 12 应用时,我们可以使用WinINetC++/CXWindows::Web::Http命名空间来发送 HTTP 请求。以下是使用Windows::Web::Http的示例代码:

#include <iostream>
#include <ppltasks.h>
#include <windows.web.http.h>
#include <windows.data.json.h>
#include <collection.h>

using namespace concurrency;
using namespace Windows::Web::Http;
using namespace Windows::Data::Json;
using namespace Windows::Foundation;
using namespace Platform;

// 异步函数发送HTTP POST请求
IAsyncAction^ CallPythonAPI() {
    return create_async([=]() {
        try {
            // 创建HttpClient对象
            HttpClient^ httpClient = ref new HttpClient();
            // 创建JSON对象
            JsonObject^ jsonObject = ref new JsonObject();
            jsonObject->SetNamedValue("a", JsonValue::CreateNumberValue(1));
            jsonObject->SetNamedValue("b", JsonValue::CreateNumberValue(2));
            // 将JSON对象转换为字符串
            String^ jsonString = jsonObject->Stringify();
            // 创建HttpStringContent对象
            HttpStringContent^ content = ref new HttpStringContent(jsonString, Windows::Storage::Streams::UnicodeEncoding::Utf8, "application/json");
            // 发送POST请求
            Uri^ uri = ref new Uri("http://localhost:5000/add");
            create_task(httpClient->PostAsync(uri, content)).then([](HttpResponseMessage^ response) {
                // 检查响应状态码
                response->EnsureSuccessStatusCode();
                // 读取响应内容
                return response->Content->ReadAsStringAsync();
            }).then([](String^ responseBody) {
                // 解析JSON响应
                JsonObject^ resultJson;
                if (JsonObject::TryParse(responseBody, &resultJson)) {
                    double result = resultJson->GetNamedNumber("result");
                    std::wcout << L"Result: " << result << std::endl;
                }
            });
        }
        catch (Exception^ ex) {
            std::wcout << L"Exception: " << ex->Message->Data() << std::endl;
        }
    });
}

int main() {
    // 使用task包装IAsyncAction并等待完成
    task<void> asyncTask(CallPythonAPI());
    asyncTask.wait();
    return 0;
}
代码解释
  1. 包含必要的头文件:包含ppltasks.hwindows.web.http.h等头文件。
  2. 定义异步函数CallPythonAPI
    • 创建HttpClient对象。
    • 创建 JSON 对象并设置ab的值。
    • 将 JSON 对象转换为字符串,并创建HttpStringContent对象。
    • 发送 POST 请求到 Python API 接口。
    • 检查响应状态码,读取响应内容。
    • 解析 JSON 响应,提取结果并输出。
  3. main函数中调用异步函数:调用CallPythonAPI并等待其完成。

调用时windows.web.http  windows.data.json  ppltasks需要修改的设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云缘若仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值