RESTBED是一个全面,一致的编程模型,用于构建需要HTTP上无缝且安全的通信的应用程序,并能够建模一系列业务流程,旨在针对移动,平板电脑,台式机和嵌入式生产环境。
这类似于将NGINX嵌入您的公司自己的产品线中。 - 解决方案建筑师,Billrock Technology
| 特征 | 描述 |
|---|---|
| Websocket | 单个TCP连接上的全双工通信通道。 |
| 服务器范围事件 | 服务器范围的事件启用了基于文本的事件数据的有效服务器到客户流的有效传输 - EG,实时通知或服务器上生成的更新。 |
| 彗星 | 长时间的轮询模型允许长期运行的HTTP请求将数据从服务器推向客户端。 |
| SSL/TLS | 确保电线通信使您可以在线传输私人数据。 |
| 会话管理 | 创建自定义HTTP会话持久性和管理逻辑。 |
| HTTP管道 | 允许多个HTTP请求在单个TCP连接上发送的技术,而无需等待相应的响应。 |
| 路径参数 | 用自定义路径参数(例如资源键,修订等)注释URIS ... |
| 查询参数 | 自动查询参数解析。 |
| 标题过滤器 | 标题的过滤器传入HTTP请求。 |
| 记录 | 自定义创建日志条目的方法和地点。 |
| 多路径资源 | 为提高可读性提供资源多路径。 |
| 可自定义的方法 | 添加您自己的自定义HTTP方法。 |
| 压缩 | 适应性解决任何形式的压缩GZIP,Deflate等... |
| 编码 | 适应性,以解决任何形式的编码UTF-32,ASCII等... |
| 规则引擎 | 通过使用可读的代码单位处理传入请求来降低复杂性。 |
| http/https | 内置可选SSL同行证书验证的客户功能。弃用 |
| IPv4/ipv6 | Internet协议版本4/6网络支持。 |
| 建筑学 | 异步单或多线程体系结构,能够解决C10K问题。 |
| 转换器 | 主数据类型的内置路径,查询和标题转换。 |
| 验证 | 单独的服务和/或资源级认证。 |
| 错误处理 | 单独的服务和/或资源级别错误处理。 |
| 地址绑定 | 将HTTP和/或HTTPS服务绑定到单独的IP地址。 |
| 信号处理 | 捕获OS生成的过程信号。 |
| 文档 | 涵盖体系结构和API的高质量文档。 |
| 遵守 | 灵活性以解决HTTP 1.0/1.1+合规性。 |
| 成熟 | 自2013年以来,安全,稳定并进行了广泛的测试。 |
| 社区 | 活跃,充满活力和充满活力的开源社区。 |
| 支持 | Corvusoft提供商业支持。 |
# include < memory >
# include < cstdlib >
# include < restbed >
using namespace std ;
using namespace restbed ;
void post_method_handler ( const shared_ptr< Session > session )
{
const auto request = session-> get_request ( );
int content_length = request-> get_header ( " Content-Length " , 0 );
session-> fetch ( content_length, [ ]( const shared_ptr< Session > session, const Bytes & body )
{
fprintf ( stdout, " %.*s n " , ( int ) body. size ( ), body. data ( ) );
session-> close ( OK, " Hello, World! " , { { " Content-Length " , " 13 " } } );
} );
}
int main ( const int , const char ** )
{
auto resource = make_shared< Resource >( );
resource-> set_path ( " /resource " );
resource-> set_method_handler ( " POST " , post_method_handler );
auto settings = make_shared< Settings >( );
settings-> set_port ( 1984 );
settings-> set_default_header ( " Connection " , " close " );
Service service;
service. publish ( resource );
service. start ( settings );
return EXIT_SUCCESS;
}可以在此处找到更多深入的示例。要查看愤怒中使用的休息,请访问Corvusoft的RestQ项目。
©2013-2020英国Corvusoft Limited。版权所有。
休息框架是双重许可的;有关详细信息,请参见许可证。
请联系[email protected],以获取支持和许可选项,包括定制软件开发,测试,设计咨询,培训,指导和代码审查。
请通过问题跟踪器提交所有增强功能,建议和缺陷;或者,在标记为#restbed的Stackoverflow上提出一个问题。
git clone --recursive https://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake [-DBUILD_SSL = NO] [-DBUILD_TESTS = NO] ..
make install
make test现在,您将找到分布子折叠器中安装的所有必需组件。
| 选项 | 描述 | 默认 |
|---|---|---|
| build_ssl | 启用SSL/TLS支持。 | 启用 |
| build_ipc | 启用Unix域插座。 | 禁用 |
| build_tests | 建立项目测试套件。 | 启用 |
| build_devel_package | 将标题安装到CMAKE_INSTALL_PREFIX中。 | 启用 |
| build_shared_library | 产生共同的休息构建。 | 启用 |
| build_static_library | 产生静止的休息。 | 启用 |
先决条件:Visual Studio 2022,Cmake,Git,Perl。
使用X64本机工具命令提示,如果需要,请先构建OpenSSL。
git clone --recursive https://github.com/corvusoft/restbed.git
cd restbeddependencyopenssl
perl Configure [no-]shared
nmake
nmake test如果选择使用默认的OpenSL构建(共享),则需要在环境中包括安装路径。
set PATH = restbeddependencyopenssl; %PATH%如果选择使用静态OPENSL构建(无共享),则在链接应用程序代码时需要包括其他依赖项;有关详细信息,请参见OpenSSL项目。
target_link_libraries( my_microservice restbed-static.lib ws2_32.lib advapi32.lib crypt32.lib gdi32.lib user32.lib )现在继续进行以下休息构建指令。
mkdir restbedbuild
cd restbedbuild
cmake -G " Visual Studio 17 2022 " [-DBUILD_SSL=NO] [-DBUILD_TESTS=NO] ..
cmake --build . --target ALL_BUILD --config Release
ctest有关Microsoft Visual Studio 14 2015年的说明和更多详细信息,请参阅功能#17。
您可以使用VCPKG依赖项管理器下载和安装休息:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install restbedMicrosoft团队成员和社区贡献者保持最新的VCPKG中休息端口。如果该版本已过时,请在VCPKG存储库上创建问题或拉出请求。
该代码库旨在尽可能地进行自我记录。我们提供了许多例子和测试套件,以帮助开发人员。
您可以在此处找到最新的设计和API文档。
| 资源 | 要求 |
|---|---|
| 编译器 | C ++ 14兼容或以上 |
| 操作系统 | BSD,Linux,Mac OSX,Windows,Raspbian |
| 里程碑 | 特征 | 地位 |
|---|---|---|
| 0.0 | 异步HTTP服务 | 完全的 |
| 1.0 | HTTP 1.0合规性 | 完全的 |
| 2.0 | HTTP 1.1合规性 | 完全的 |
| 2.5 | 安全套接字层 | 完全的 |
| 2.5 | 同时网络端口(HTTP/HTTPS) | 完全的 |
| 3.0 | 规则引擎 | 完全的 |
| 3.5 | 在服务卢布上安排任务 | 完全的 |
| 3.5 | 多线程服务功能 | 完全的 |
| 3.5 | 将服务与特定地址结合 | 完全的 |
| 3.5 | 会话管理 | 完全的 |
| 4.0 | HTTP客户端 | 完全的 |
| 4.0 | 信号处理 | 完全的 |
| 4.5 | API文档 | 完全的 |
| 4.5 | 网络插座 | 完全的 |
| 5.0 | 客户端SSL证书 | 发展 |
| 5.0 | 资源缓存 | 发展 |
| 5.0 | 运行时修改 | 发展 |
| 5.0 | HTTP 2合规性 | 发展 |
| 5.0 | 重构,减少,再利用 | 积极的 |
| 方法 | 描述 |
|---|---|
| 叽叽喳喳 | 向我们发推文您的问题和功能请求。 |
| [email protected] | 支持相关查询。 |
| [email protected] | 与销售有关的查询。 |