C++后端使用Resultful API接收请求的示例
时间: 2024-03-27 13:37:56 浏览: 85
以下是使用 CppCMS 接收 RESTful API 请求的一个简单示例:
```cpp
#include <cppcms/application.h>
#include <cppcms/applications_pool.h>
#include <cppcms/service.h>
#include <cppcms/http_request.h>
#include <cppcms/http_response.h>
class my_app : public cppcms::application {
public:
my_app(cppcms::service& srv) : cppcms::application(srv) {
}
virtual void main(std::string url) {
if (url == "/users") {
handle_users();
}
else if (url.compare(0, 7, "/users/") == 0) {
handle_user(url.substr(7));
}
else {
response().status(404);
response().out() << "Page not found";
}
}
void handle_users() {
if (request().request_method() == "GET") {
//返回所有用户信息
}
else if (request().request_method() == "POST") {
//新增用户
}
else {
response().status(405);
response().out() << "Method not allowed";
}
}
void handle_user(std::string id) {
if (request().request_method() == "GET") {
//返回指定用户信息
}
else if (request().request_method() == "PUT") {
//修改指定用户信息
}
else if (request().request_method() == "DELETE") {
//删除指定用户
}
else {
response().status(405);
response().out() << "Method not allowed";
}
}
};
int main(int argc, char** argv) {
cppcms::service srv(argc, argv);
srv.applications_pool().mount(cppcms::applications_factory<my_app>());
srv.run();
return 0;
}
```
这个示例定义了一个名为 `my_app` 的应用程序,与前面的例子类似,它继承自 `cppcms::application` 类,并覆盖了 `main` 方法。在 `main` 方法中,首先判断请求的 URL 是否为 `/users`,如果是,则调用 `handle_users` 方法进行处理。如果 URL 的前缀为 `/users/`,则调用 `handle_user` 方法进行处理。
在 `handle_users` 方法中,根据请求的方法来处理不同的操作。如果是 GET 方法,则返回所有用户信息;如果是 POST 方法,则新增用户。如果请求的方法不是 GET 或 POST,则返回状态码 405(Method Not Allowed)。
在 `handle_user` 方法中,同样根据请求的方法来处理不同的操作。如果是 GET 方法,则返回指定用户信息;如果是 PUT 方法,则修改指定用户信息;如果是 DELETE 方法,则删除指定用户。如果请求的方法不是 GET、PUT 或 DELETE,则返回状态码 405。
在 `main` 函数中,创建了一个 `cppcms::service` 对象,并将 `my_app` 添加到应用程序池中。然后调用 `run` 方法启动服务,等待接收 RESTful API 请求。
阅读全文