URI Template(RFC 6570, Level3)をサポートします。
[詳解]
#include "nn/nlib/UriTemplate.h"
|
static bool | IsUriTemplate (const char *first, const char *last) noexcept |
| 文字列がURI Template(Level 3まで)であるかどうかを判定します。 [詳解]
|
|
static bool | IsUriTemplate (const char *str) noexcept |
| IsUriTemplate(str, str + strlen(str)) を返します。
|
|
URI Template(RFC 6570, Level3)をサポートします。
- 説明
- URIテンプレートとは、RFC 6570で定義された URIに'{'と'}'で囲まれた変数を交ぜ書きにしたテキストです。 変数を実体化することにより、実際のURIが簡単に作成できます。
UriTemplate
クラスはRFC6570のLevel1, Level2, Level3をサポートしています。
- 以下が利用例です。
UriTemplate tmpl;
errno_t e = templ.SetTemplate(
"http://www.example.com/foo{?query,number}");
e = templ.SetParameter("query", "mycelium");
e = templ.SetParameter("number", "100");
char str[256];
e = templ.Resolve(str);
- URI Templateの詳細についてはRFC 6570のテキストを参照してください。
- 参照
- https://tools.ietf.org/html/rfc6570 (RFC6570)
- 各種例:
- misc/uri/uri.cpp.
UriTemplate.h の 29 行目に定義があります。
◆ IsUriTemplate()
nn::nlib::UriTemplate::IsUriTemplate |
( |
const char * |
first, |
|
|
const char * |
last |
|
) |
| |
|
staticnoexcept |
文字列がURI Template(Level 3まで)であるかどうかを判定します。
- 引数
-
[in] | first | 検査する文字列の先頭 |
[in] | last | 検査する文字列の末尾 |
- 戻り値
-
文字列がURI | Templateである場合はtrue 、そうでなければfalse |
◆ Resolve()
nn::nlib::UriTemplate::Resolve |
( |
size_t * |
written, |
|
|
char * |
str, |
|
|
size_t |
n |
|
) |
| const |
|
noexcept |
テンプレートに値を代入した文字列str
に書き込みます。
- 引数
-
[out] | written | 書き込まれた文字数(ヌル文字を含まない) |
[out] | str | 文字列が格納されるバッファ |
[in] | n | バッファ・サイズ |
- 戻り値
- 0ならば成功
◆ SetParameter()
nn::nlib::UriTemplate::SetParameter |
( |
const char * |
param, |
|
|
const char * |
value |
|
) |
| |
|
noexcept |
パラメータとその値を設定します。
- 引数
-
- 戻り値
-
0 | エラーは発生していません。 |
EINVAL | param がNULL か空文字列の場合 |
- 説明
- 値に空文字列を入れた場合と
NULL
を入れた場合の動作は異なります。 NULL
の場合は値が未定義となります。
◆ SetTemplate()
nn::nlib::UriTemplate::SetTemplate |
( |
const char * |
first, |
|
|
const char * |
last |
|
) |
| |
|
noexcept |
テンプレートを設定します。
- 引数
-
[in] | first | テンプレート文字列の先頭 |
[in] | last | テンプレート文字列の末尾 |
- 戻り値
-
0 | エラーは発生していません。 |
EINVAL | strがNULL の場合 |
EILSEQ | '{}' 内の変数リストが不正な場合 |
ERANGE | テンプレート文字列が長すぎる場合 |
ENOMEM | 内部でメモリの確保に失敗した場合 |
- 説明
- テンプレートを設定します。
%
エンコードが必要な文字は適宜%
エンコードされます。
このクラス詳解は次のファイルから抽出されました: