dartapi_core 0.0.21
dartapi_core: ^0.0.21 copied to clipboard
Core utilities for building typed, structured REST APIs in Dart, including routing, validation, and middleware support.
0.0.21 #
- Add
timeoutMiddleware(Duration)— returns 408 if handler exceeds the timeout - Fix:
nullhandler result now returns 204 No Content instead of throwing a 500 - Improve
loggingMiddlewareoutput:[timestamp] METHOD /path STATUS 12ms— removed emoji, added response duration
0.0.20 #
- Fix:
_serializenow handlesboolandnumresponses — returning aboolfrom a handler no longer throws a 500 "Unable to serialize" error
0.0.19 #
- Add
test/base_controller_test.dart— routes getter, webSocketRoutes default, route callability - Add
test/logging_middleware_test.dart— pass-through behaviour, method coverage, pipeline composition - Extend
test/api_route_test.dart— per-route middleware: ordering, short-circuit, header injection
0.0.18 #
- Add
EnvConfigbase class — typed env var access (env,envInt,envDouble,envBool) with injectableenvironmentmap for testing - Add
MissingEnvExceptionandInvalidEnvException - Add
HealthController— exposesGET /healthreturning{"status":"ok","uptime":"..."}
0.0.17 #
- Fix: use super parameters in
NotEmptyValidatorandUrlValidator(linter cleanup)
0.0.16 #
- Add
MinLengthValidator,MaxLengthValidator,NotEmptyValidator,RangeValidator<T extends num>,PatternValidator,UrlValidator - Add
Pagination— extracts?pageand?limitfrom a request with clamping; computesoffset - Add
PaginatedResponse—Serializablewrapper that includes ametablock (page,limit,total,totalPages,hasNext,hasPrev) - Add
SseEventandsseResponse()for Server-Sent Events streaming
0.0.15 #
- Add
header<T>()extension onRequestfor typed header extraction (case-insensitive) - Add
CookieRequestExtensions—request.cookiesmap andrequest.cookie(name)for reading cookies - Add
setCookie()helper for attachingSet-Cookieheaders to responses (supportsmaxAge,path,domain,sameSite,httpOnly,secure) - Add
cacheMiddleware— in-memory GET response cache with configurable TTL and custom key extractor; addsX-Cache: HIT/MISSheaders
0.0.14 #
- Add
multipartFiles(),file(),formFields()extensions onRequestformultipart/form-dataparsing - Add
UploadedFilewithbytes,filename,contentType,text, andisFile - Add
BackgroundTaskQueue,backgroundTaskMiddleware(), andRequest.backgroundTasksfor post-response async work - Add
WebSocketRoutefor WebSocket endpoints alongside HTTP routes BaseControllernow haswebSocketRoutes(default empty list)- New dependencies:
mime,shelf_web_socket,web_socket_channel
0.0.13 #
- Add
rateLimitMiddleware— token-bucket rate limiter keyed by IP (or custom key); returns 429 withRetry-AfterandX-RateLimit-*headers - Add
requestIdMiddleware— attachesX-Request-Idto every request/response; propagates existing IDs; stores ID inrequest.context['requestId'] - Add
compressionMiddleware— gzip-compresses responses above a configurable threshold when client sendsAccept-Encoding: gzip
0.0.12 #
- Improve README: update version snippet, improve formatting
0.0.11 #
- Fix type-mismatch error message in
verifyKey: now uses friendly JSON type names (string,integer,number,boolean) instead of Dart type names
0.0.10 #
- Swagger UI:
bearerAuthsecurity scheme is now always present in the spec so the Authorize button always appears - Swagger UI:
persistAuthorization: true— entered tokens survive page refreshes (stored in localStorage)
0.0.9 #
- Add
OpenApiGenerator— generates an OpenAPI 3.0 spec from a list ofApiRoutes - Add
DocsController— servesGET /openapi.json,GET /docs(Swagger UI),GET /redoc(ReDoc) - Add
SecuritySchemeenum withbearervalue;ApiRoutenow acceptssecurity: [SecurityScheme.bearer] - Add
contentTypefield onApiRoute(default'application/json'); used for HTML doc routes - Add tests for all new OpenAPI types (23 additional tests)
0.0.8 #
- Expand test suite: comprehensive tests for
ApiRoute,RequestExtensions(pathParam/queryParam),MapExtensions, andglobalExceptionMiddleware
0.0.7 #
- Add
pathParam<T>()extension onRequestfor typed path parameter extraction - Add
queryParam<T>()extension onRequestfor typed query parameter extraction with optional default values - Add
statusCodefield onApiRoute(default200) for custom success response codes (e.g. 201, 204) - Add
globalExceptionMiddlewarefor app-level exception handling
0.0.6 #
- Add
ApiExceptionclass for returning specific HTTP error status codes from handlers and validators - Fix
FormatException(malformed JSON body) now returns 400 Bad Request instead of 500 - Fix validation errors from
verifyKey()now return 422 Unprocessable Entity instead of 500 ApiExceptionis exported from the package
0.0.5 #
- Improved Logging
0.0.4 #
- Improve code documentation
0.0.3 #
- Add Email Validator
0.0.2 #
- Change License
- Add Middelware
- Add Validators
- Enhance Key Verification with Validators
0.0.1 #
- Initial version.