body
named argument to change
method on Request
and Response
.Updated minimum SDK to 1.9.0
.
Allow an empty url
parameter to be passed in to new Request()
. This fits the stated semantics of the class, and should not have been forbidden.
logRequests
outputs a better message a request has a query string.null
responses.shelf_io
now takes a "shelf.io.buffer_output"
Response.context
parameter that controls HttpResponse.bufferOutput
.
Fixed spelling errors in README and code comments.
Breaking change: The semantics of Request.scriptName
and Request.url
have been overhauled, and the former has been renamed to Request.handlerPath
. handlerPath
is now the root-relative URL path to the current handler, while url
's path is the relative path from the current handler to the requested. The new semantics are easier to describe and to understand.
Practically speaking, the main difference is that the /
at the beginning of url
's path has been moved to the end of handlerPath
. This makes url
's path easier to parse using the path
package.
Request.change
's handling of handlerPath
and url
has also changed. Instead of taking both parameters separately and requiring that the user manually maintain all the associated guarantees, it now takes a single path
parameter. This parameter is the relative path from the current handlerPath
to the next one, and sets both handlerPath
and url
on the new Request
accordingly.
Request
to support the body
model from Response
.Fixed createMiddleware
to only catch errors if errorHandler
is provided.
Updated handleRequest
in shelf_io
to more gracefully handle errors when parsing HttpRequest
.
Request.change
to include the original onHijack
callback if one exists.Added default body text for Response.forbidden
and Response.notFound
if null is provided.
Clarified documentation on a number of Response
constructors.
Updated README
links to point to latest docs on www.dartdocs.org
.
collection
package.stack_trace
.The shelf_io
adapter now sends the Date
HTTP header by default.
Fixed logic for setting Server header in shelf_io
.
Request.change
: scriptName
and url
.Add a Cascade
helper that runs handlers in sequence until one returns a response that's neither a 404 nor a 405.
Add a Request.change
method that copies a request with new header values.
Add a Request.hijack
method that allows handlers to gain access to the underlying HTTP socket.
Capture all asynchronous errors thrown by handlers if they would otherwise be top-leveled.
Add more detail to the README about handlers, middleware, and the rules for implementing an adapter.
context
map to Request
and Response
for passing data among handlers and middleware.scheduled_test
development dependency up to v0.12.0Stack
to Pipeline
.Access to headers for Request
and Response
is now case-insensitive.
The constructor for Request
has been simplified.
Request
now exposes url
which replaces pathInfo
, queryString
, and pathSegments
.
Removed old testing infrastructure.
Updated documentation address.
http_parser
package.mime
package.string_scanner
package.pubspec
details for move to Dart SDK.Response
int get contentLength
DateTime get expires
DateTime get lastModified
Request
contentLength
is now read from headers
. The constructor argument has been removed.Stream<List<int>> body
constructor argument.Stream<List<int>> read()
and Future<String> readAsString([Encoding encoding])
DateTime get ifModifiedSince
String get mimeType
Encoding get encoding
Shelf
prefix from all classes.Response
has drastically different constructors.Response
now accepts a body of either String
or Stream<List<int>>
.Response
now exposes encoding
and mimeType
.