Boost
arrow_drop_down
Boost.Url
M
D

本次发布

Vinnie Falco
Vinnie Falco
作者
Alan de Freitas
Alan de Freitas
作者
Mohammad Nejati
Mohammad Nejati
贡献者 - 新

依赖项

Boost.URL

分支 master develop

文档

Documentation

Documentation

Drone

Build Status

Build Status

GitHub Actions

CI

CI

codecov.io

codecov

codecov

矩阵

Matrix

Matrix

Boost.URL

概述

Boost.URL 是一个可移植的 C++ 库,它提供了容器和算法来建模一个“URL”,更正式地描述为统一资源标识符(URI)规范(下文称为 rfc3986)。URL 是一个紧凑的字符序列,用于标识抽象或物理资源。例如,这是一个符合绝对 URI 语法的有效 URL。

https://www.example.com/path/to/file.txt?userid=1001&page=2&results=full

该库理解与 URL 相关的各种语法,并提供字符串验证和解析、URL 字符串操作以及在 URL 上执行的算法,例如规范化和解析。虽然该库是通用的,但已特别注意确保实现和数据表示对需要高效安全地处理 URL 的网络程序友好,包括输入来自不受信任来源的情况。提供了使用错误码而非异常的接口,并且所有算法都提供了一种根据需要完全避免内存分配的机制。该库的另一个特点是所有容器的修改都会使 URL 保持有效状态。使用 Boost.URL 的代码易于阅读、灵活且高效。

网络程序,例如使用 Boost.Asio 或 Boost.Beast 的程序,经常需要处理、生成或修改 URL。该库为处理这些用例提供了非常急需的模块化组件。

示例

using namespace boost::urls;

// Parse a URL. This allocates no memory. The view
// references the character buffer without taking ownership.
//
url_view uv( "https://www.example.com/path/to/file.txt?id=1001&name=John%20Doe&results=full" );

// Print the query parameters with percent-decoding applied
//
for( auto v : uv.params() )
    std::cout << v.key << "=" << v.value << " ";

// Prints: id=1001 name=John Doe results=full

// Create a modifiable copy of `uv`, with ownership of the buffer
//
url u = uv;

// Change some elements in the URL
//
u.set_scheme( "http" )
 .set_encoded_host( "boost.org" )
 .set_encoded_path( "/index.htm" )
 .remove_query()
 .remove_fragment()
 .params().append( {"key", "value"} );

std::cout << u;

// Prints: https://boost.ac.cn/index.htm?key=value

设计目标

该库实现了这些目标:

  • 仅需要 C++11

  • 无异常工作

  • 编译速度快,无模板

  • 严格遵守 rfc3986

  • 分配内存或使用内联存储

  • 可选的仅头文件,无需链接库

要求

  • 需要 Boost 和支持至少 C++11 的编译器

  • 标准类型的别名使用其 Boost 等效类型

  • 链接到已构建的静态或动态 Boost 库,或使用头文件(见下文)

  • 支持 -fno-exceptions,自动检测

仅头文件

要将其用作头文件库,即消除将程序链接到静态或动态 Boost.URL 库的要求,只需在你项目的*.cpp*文件中包含以下行:

#include <boost/url/src.hpp>

嵌入式

Boost.URL 在嵌入式设备上运行良好。它可以以一种避免所有动态内存分配的方式使用。此外,它还可以根据需要设计为在没有异常的情况下工作。

支持的编译器

Boost.URL 使用以下编译器进行测试:

  • clang:3.8、4、5、6、7、8、9、10、11、12

  • gcc:4.8、4.9、5、6、7、8、9、10、11

  • msvc: 14.0, 14.1, 14.2, 14.3

以及这些架构:x86、x64、ARM64、S390x

质量保证

该库的开发基础设施包括以下提交即分析:

  • 覆盖率报告

  • 基准性能比较

  • 在 Drone.io 上编译和测试

Visual Studio 解决方案生成

cmake -G "Visual Studio 16 2019" -A Win32 -B bin -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/msvc.cmake
cmake -G "Visual Studio 16 2019" -A x64 -B bin64 -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/msvc.cmake

License

根据 Boost Software License, Version 1.0 分发。(请参阅随附的 LICENSE_1_0.txt 文件或访问 https://boost.ac.cn/LICENSE_1_0.txt

全部时间

sdarwin
sdarwin
贡献者
Alexander Grund
Alexander Grund
贡献者
BrianWeed
BrianWeed
贡献者
Alexey Mednyy
Alexey Mednyy
贡献者
jack
jack
贡献者
pengzhendong
pengzhendong
贡献者
Daniel Richard G
Daniel Richard G
贡献者
Ed Catmur
Ed Catmur
贡献者
Ed Tanous
Ed Tanous
贡献者
Rene Rivera
Rene Rivera
贡献者
Christian Mazakas
Christian Mazakas
贡献者