request method
Führt einen versionsgebundenen, relativen Request aus.
path - Pfad relativ zur konfigurierten DOCUframe-API, ohne Versions-
und ohne Alias-Präfix (beides ergänzt der Runtime); mit oder ohne
führenden /.
headers - zusätzliche Header; überschreiben bei Namensgleichheit die
Standard-Header.
Wirft ArgumentError bei ungültigem Pfad (absolute URL, Schema,
..-Traversierung, Backslashes (roh oder als %5c), eigenem
v1/v2- oder Alias-Präfix, Query oder Fragment im Pfad) und
StateError, wenn der zugehörige Runtime bereits freigegeben wurde.
Implementation
Future<RawApiResponse> request({
required ApiVersion version,
required ApiHttpMethod method,
required String path,
Map<String, String>? queryParameters,
String? body,
String? contentType,
Map<String, String>? headers,
}) {
final rawRequest = RawApiRequest(
version: version,
method: method,
path: path,
queryParameters: queryParameters,
body: body,
contentType: contentType,
headers: headers,
);
_validatePath(rawRequest.path);
// Raw ist NIE Multi-Request-fähig, unabhängig vom angefragten Pfad
// (derselbe Pfad kann über einen nativen Endpoint durchaus multi-fähig
// sein). Dies läuft daher über eine interne No-Buffer-Runtime-Grenze
// statt über eine öffentliche Per-Request-Buffering-Option.
return RuntimeExecutionContext.runWithoutBuffering(
() => _runtime.execute(
ApiRequest<RawApiResponse>(
method: rawRequest.method,
version: rawRequest.version,
path: rawRequest.path,
queryParameters: rawRequest.queryParameters,
body: rawRequest.body,
contentType: rawRequest.contentType,
additionalHeaders: rawRequest.headers,
authentication: AuthenticationPolicy.session,
responsePolicy: const RawSessionAwareResponsePolicy(),
operationId: 'raw.${version.name}.${method.name}',
),
),
);
}