使用cpprestsdk库访问resful服务端接口

cpprestsdk 是一个用于构建基于 REST 的服务的 C++ 库。以下是一个简单的示例,展示了如何使用 cpprestsdk 创建一个 HTTP GET 请求。

一、代码示例

1、客户端(c++):

#include <cpprest/http_client.h>
#include <cpprest/filestream.h>
#include <fstream>
#include <iostream>

using namespace utility;                    // Common utilities like string conversions
using namespace web;                        // Common features like URIs.
using namespace web::http;                  // Common HTTP functionality
using namespace web::http::client;          // HTTP client features
using namespace concurrency::streams;       // Asynchronous streams

void printFileContent(const std::string& fileName) {
    std::ifstream file(fileName);
    if (file.is_open()) {
        std::string line;
        while (getline(file, line)) {
            std::cout << line << std::endl;
        }
        file.close();
    } else {
        std::cout << "Unable to open file";
    }
}

int main()
{
    auto fileStream = std::make_shared<ostream>();

    // Open stream to output file.
    pplx::task<void> requestTask = fstream::open_ostream(U("results.html"))
    .then([=](ostream outFile)
    {
        *fileStream = outFile;

        // Create http_client to send the request.
        http_client client(U("http://127.0.0.1:5000/"));

        // Build request URI and start the request.
        uri_builder builder(U("/users"));
        return client.request(methods::GET, builder.to_string());
    })

    // Handle response headers arriving.
    .then([=](http_response response)
    {
        printf("Received response status code:%u\n", response.status_code());

        // Write response body into the file.
        return response.body().read_to_end(fileStream->streambuf());
    })

    // Close the file stream.
    .then([=](size_t)
    {
        return fileStream->close();
    })
    .then([=]() {
          printFileContent("results.html");
    });

    // Wait for all the outstanding I/O to complete and handle any exceptions
    try
    {
        requestTask.wait();
    }
    catch (const std::exception &e)
    {
        printf("Error exception:%s\n", e.what());
    }

    return 0;
}


2、服务端(python):

from flask import Flask, jsonify, request

app = Flask(__name__)

# 获取所有用户的列表
@app.route('/users', methods=['GET'])
def get_users():
    # 返回所有用户的列表
    return jsonify(users)

# 获取特定用户的详细信息
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    # 返回特定用户的详细信息
    return jsonify(user)

# 创建一个新用户
@app.route('/users', methods=['POST'])
def create_user():
    new_user = request.json
    # 创建新用户并返回成功状态码
    return jsonify({'message': 'User created successfully'}), 201

# 更新特定用户的信息
@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    updated_user = request.json
    # 更新特定用户的信息并返回成功状态码
    return jsonify({'message': 'User updated successfully'}), 200

# 删除特定用户
@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    # 删除特定用户并返回成功状态码
    return jsonify({'message': 'User deleted successfully'}), 200

if __name__ == '__main__':
    # 初始化用户数据
    users = [
        {'id': 1, 'name': '张三', 'age': 20},
        {'id': 2, 'name': '李四', 'age': 25},
        {'id': 3, 'name': '王五', 'age': 30}
    ]
    app.run(debug=True)

二、Linux 系统安装 cpprestsdk库

 在终端输入如下指令进行安装:

sudo apt-get install libcpprest-dev

参考文档:cpprestsdk应用实例-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值