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