Boost
arrow_drop_down
Boost.Url
M
D

本次发布

Vinnie Falco
Vinnie Falco
作者
Alan de Freitas
Alan de Freitas
作者
ivanpanch
贡献者 - 新
Alexander Grund
Alexander Grund
贡献者
sdarwin
sdarwin
贡献者

依赖项

已移除

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 是一个紧凑的字符序列,用于标识抽象或物理资源。例如,这是一个符合 absolute-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 库的要求,只需在新创建或现有源文件中的恰好一个文件中添加以下行。

#include <boost/url/src.hpp>

嵌入式

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

支持的编译器

Boost.URL 已在以下编译器上进行了测试

  • clang: >=3.8

  • gcc: >=5

  • msvc: >=14

以及这些架构: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

全部时间

Rene Rivera
Rene Rivera
贡献者
BrianWeed
BrianWeed
贡献者
Alexey Mednyy
Alexey Mednyy
贡献者
jack
jack
贡献者
pengzhendong
pengzhendong
贡献者
Daniel Richard G
Daniel Richard G
贡献者
Ed Catmur
Ed Catmur
贡献者
Mohammad Nejati
Mohammad Nejati
贡献者
Ed Tanous
Ed Tanous
贡献者
Christian Mazakas
Christian Mazakas
贡献者