| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
Public 成员函数 | 所有成员列表
rm::async::Webapp类 参考final
数据 IO 与通信模块 » 网络通信

Web 应用程序框架 更多...

`#include <rmvl/io/netapp.hpp>`

rm::async::Webapp 的协作图:

## Public 成员函数
| Webapp (IOContext &io_context)
| 创建 Web 应用程序实例
void | use (std::string_view url, const Router &router)
| 使用路由
void | use (ResponseMiddleware mwf)
| 使用中间件
void | listen (uint16_t port, std::function< void()> callback=nullptr)
| 监听指定端口
void | get (std::string_view uri, RouteHandler callback)
| Get 请求路由
void | post (std::string_view uri, RouteHandler callback)
| Post 请求路由
void | head (std::string_view uri, RouteHandler callback)
| Head 请求路由
void | del (std::string_view uri, RouteHandler callback)
| Delete 请求路由
void | ws (std::string_view uri, WebSocketHandler callback)
| WebSocket 路由
Task | spin ()
| 启动 Socket 监听任务循环
Task | spinWithoutSigint ()
| 启动 Socket 监听任务循环，不启用 SIGINT 信号处理
bool | running () const noexcept
| 是否正在运行
void | stop () noexcept
| 停止运行

## 详细描述

Web 应用程序框架

1. 轻量级的异步 Web 应用程序框架，支持路由、中间件，支持路径参数和查询参数
2. 所有设计均参考 Express.js，具体的 Express.js 教程请参考 https://expressjs.com/
3. 目前支持的方法与 rm::Router 一致

## 构造及析构函数说明

## ◆ Webapp()

rm::async::Webapp::Webapp | ( | IOContext & | io_context | ) |
| inline

创建 Web 应用程序实例

参数

  [in] | io_context | 异步 I/O 执行上下文

## 成员函数说明

## ◆ del()

void rm::async::Webapp::del | ( | std::string_view | uri,
|  | RouteHandler | callback )
| inline

Delete 请求路由

参数

  [in] | uri | 统一资源标识符，支持路径参数，如 "/api/:name"
  [in] | callback | Delete 响应回调

## ◆ get()

void rm::async::Webapp::get | ( | std::string_view | uri,
|  | RouteHandler | callback )
| inline

Get 请求路由

参数

  [in] | uri | 统一资源标识符，支持路径参数，如 "/api/:name"
  [in] | callback | Get 响应回调

## ◆ head()

void rm::async::Webapp::head | ( | std::string_view | uri,
|  | RouteHandler | callback )
| inline

Head 请求路由

参数

  [in] | uri | 统一资源标识符，支持路径参数，如 "/api/:name"
  [in] | callback | Head 响应回调

## ◆ listen()

void rm::async::Webapp::listen | ( | uint16_t | port,
|  | std::function< void()> | callback = nullptr )
| inline

监听指定端口

参数

  [in] | port | 监听的端口号
  [in] | callback | 启动后调用的回调函数

函数调用图:

## ◆ post()

void rm::async::Webapp::post | ( | std::string_view | uri,
|  | RouteHandler | callback )
| inline

Post 请求路由

参数

  [in] | uri | 统一资源标识符，支持路径参数，如 "/api/:name"
  [in] | callback | Post 响应回调

## ◆ running()

bool rm::async::Webapp::running | ( |  | ) | const
| inline nodiscard noexcept

是否正在运行

## ◆ spin()

Task rm::async::Webapp::spin | ( |  | ) |
| nodiscard

启动 Socket 监听任务循环

返回
  rm::async::Task<> 异步任务

## ◆ spinWithoutSigint()

Task rm::async::Webapp::spinWithoutSigint | ( |  | ) |
| nodiscard

启动 Socket 监听任务循环，不启用 SIGINT 信号处理

返回
  Task<> 异步任务

## ◆ stop()

void rm::async::Webapp::stop | ( |  | ) |
| inline noexcept

停止运行

## ◆ use() [1/2]

void rm::async::Webapp::use | ( | ResponseMiddleware | mwf | ) |

使用中间件

参数

  [in] | mwf | 中间件函数

函数调用图:

## ◆ use() [2/2]

void rm::async::Webapp::use | ( | std::string_view | url,
|  | const Router & | router )

使用路由

参数

  [in] | url | 路由前缀，如 "/api"
  [in] | router | 路由器，支持路径参数，如 "/user/:id/info" 在实际请求的 URL 中为 "<url>/user/123/info"

函数调用图:

## ◆ ws()

void rm::async::Webapp::ws | ( | std::string_view | uri,
|  | WebSocketHandler | callback )
| inline

WebSocket 路由

参数

  [in] | uri | 统一资源标识符，支持路径参数，如 "/ws/chat"
  [in] | callback | WebSocket 建立连接后的回调