Fix docs citing incorrect method, "serialize_bad_request"
[catagits/Catalyst-Action-REST.git] / Changes
CommitLineData
3ba4e173 1Revision history for {{$dist->name}}
801ec379 2
3ba4e173 3{{$NEXT}}
eb3ab200 4
b74200b3 5 - Fix docs citing incorrect method name: 'serialize_bad_request' (remove leading underscore)
6
19cd07ec 71.19 2015-02-06 09:40:02-06:00 America/Chicago
8
2f47e474 9 - Make LWP a test dep instead of a hard dep (Fixes GH#3, thanks Alexander
10 Hartmaier for the report!)
1edd63a7 11 - Hard dep on JSON::MaybeXS (Fixes RT#101854, thanks Emmanuel Seyman for the
12 report and Karen Etheridge for help tracking down the cause!)
13
78f164df 141.18 2015-01-20 12:20:46-06:00 America/Chicago
15 - Fix tests on travisci so that Catalyst proper can run on travisci
16 (Thanks André Walker!)
17
eb3ab200 181.17 2014-10-23 19:58:46-05:00 America/Chicago
27829ab7 19 - Make 3xx status codes skip serialization when there is no data to serialize
ffef3497 20 (Thanks Jesse Sheidlower!)
c3d115c8 21
221.16 2014-09-12 13:21:43-05:00 America/Chicago
27829ab7 23 - Switch from JSON to JSON::MaybeXS to get a better choice of JSON parsers.
3ba4e173 24
0aceaa9b 251.15 2014-05-07 09:02:44-05:00 CST6CDT
26
27829ab7 27 - Added new status_see_other method for returning a 303 redirect.
28 - Added new status_moved method for returning a 301 redirect. (Matthew Keller)
0aceaa9b 29
9b5736d5 301.14 2013-12-27 15:32:19 America/Chicago
31
27829ab7 32 - Stop prompting for features at install time
da6b5a45 33
3ba4e173 341.13 2013-11-08 09:40:00 EST
7566d72f 35
27829ab7 36 - Fix tests to skip if YAML::Syck is not installed (Arthur Axel fREW Schmidt)
801ec379 37
3ba4e173 381.12 2013-09-03 13:00:00 EST
47c3e6b3 39
40 WARNING BACK COMPAT BREAKAGE FOLLOWS
41
27829ab7 42 Removed The YAML and HTML parser from the distro. You
47c3e6b3 43 should install these if you actually use them. They are listed as
44 optional dependencies going forward.
45
46 This is possibly a breaking change, but necessary for security and
47 considered acceptable since those formats have not generally
48 become preferred for web services.
49
50 In addition, the default de/serialization mappings for HTML and YAML
51 have been removed. You can add that back by adding the following to
52 you Configuration for the subclass of Catalyst::Controller::REST -
53
54 package Foo::Controller::Bar;
55
56 use Moose;
57 use namespace::autoclean;
58
59 BEGIN { extends 'Catalyst::Controller::REST' }
60 __PACKAGE__->config(
61 'map' => {
62 'text/html' => 'YAML::HTML',
63 'text/x-yaml' => 'YAML',
64 },
65 );
66
67 You should do this if you are using these de/serialization formats.
68
3ba4e173 691.11 2013-06-16 15:23:03 BST
70
27829ab7 71 - Fix infinite recursion in tests under Catalyst 5.90040
3ba4e173 72
731.10 2013-04-22 14:36:53 BST
74
27829ab7 75 - Use YAML rather than JSON in basic tests
e0323f6a 76
3ba4e173 771.09 2013-04-19 13:34:38 BST
81b9fff3 78
27829ab7 79 - Don't load Data::Serializer unnecessarily in tests
45d02f45 80
3ba4e173 811.08 2013-04-16 08:33:00 BST
1bb213fc 82
27829ab7 83 - Factor Data::Serializable into it's own dist to stop breakages.
1bb213fc 84
3ba4e173 85 If you use any of:
1bb213fc 86
3ba4e173 87 * Data::Dumper
88 * Data::Denter
89 * Data::Taxi
90 * Config::General
91 * PHP::Serialization
92
93 You'll need to install Catalyst-Action-Serialize-Data-Serializer and add the
94 appropriate lines to your controller config. Said lines may be:
1bb213fc 95
96 'text/x-data-dumper' => [ 'Data::Serializer', 'Data::Dumper' ],
97 'text/x-data-denter' => [ 'Data::Serializer', 'Data::Denter' ],
98 'text/x-data-taxi' => [ 'Data::Serializer', 'Data::Taxi' ],
99 'text/x-config-general' => [ 'Data::Serializer', 'Config::General' ],
100 'text/x-php-serialization' => [ 'Data::Serializer', 'PHP::Serialization' ],
101
3ba4e173 1021.07 2013-04-11 20:20:00 BST
103
27829ab7 104 - Don't serialize if a view is explicitly set.
3ba4e173 105
106 - If the controller sets the view in $c->stash->{current_view} or
107 $c->stash->{current_view_instance}, then it is explicitly requesting a
108 certain kind of serialization and C::A::Serialize shouldn't override
109 that.
110
27829ab7 111 - Remove Storable and FreezeThaw from the list
3ba4e173 112 of serialization methods offered by default, and
113 from the docs - they're totally unsafe :/
114
1151.06 2012-12-11 22:04:00 UTC
116
27829ab7 117 - Sort list of allowed methods. RT#81825
3ba4e173 118
1191.05 2012-07-02 20:13:00 BST
120
27829ab7 121 - Bugfix get_allowed_methods list:
3ba4e173 122 - include HEAD
123 - remove "not_implemented"
124
1251.04 2012-06-30 10:25:00 BST
126
27829ab7 127 - Bugfix to _dispatch_rest_method
3ba4e173 128
1291.03 2012-06-28 00:40:00 BST
130
27829ab7 131 - Expose _get_allowed_methods to the API (wreis)
3ba4e173 132
27829ab7 133 - Fix default OPTIONS handler: As the ->body is defined, then serialization
3ba4e173 134 won't happen and we don't get wrong responses. (wreis)
135
27829ab7 136 - Add default HEAD handler: auto dispatches to _GET method if it exists (wreis)
3ba4e173 137
1381.02 2012-06-05 22:23:00 BST
139
27829ab7 140 - Fix forwarded REST methods, e.g. foo_GET to be more
3ba4e173 141 correctly displayed as a forward in the stats info.
142
27829ab7 143 - Make public response building methods for errors
3ba4e173 144 _unsupported_media_type and _serialize_bad_request which
145 can be extended from an action-role to return custom
146 error response.
147
1481.01 2012-05-29 20:19:00 BST
149
27829ab7 150 - Add Catalyst::Action::Deserialize::JSON::XS
3ba4e173 151
27829ab7 152 - Fix JSON::XS useage to depend on JSON.pm v2.0, and rely on the
3ba4e173 153 fact that can be backed by XS code, by explicitly setting
154 $ENV{'PERL_JSON_BACKEND'} = 2
155
1561.00 2012-04-13 09:31:00 BST
157
27829ab7 158 - Repack without auto_include to stop Module::Install inlining
3ba4e173 159 Test::More without Test::Builder. RT#76524
160
1610.99 2012-02-28 09:09:00 UTC
162
27829ab7 163 - Repack with new Module::Install to stop depending on an unnecessary
3ba4e173 164 ExtUtils::MakeMaker version.
165
1660.98 2012-02-21 11:40:00 UTC
6e7da253 167
27829ab7 168 - More fixes as per last release.
6e7da253 169
3ba4e173 1700.97 2012-02-21 09:58:00 UTC
7b46eb07 171
27829ab7 172 - Fix test with latest Catalyst version which passes _log into
3ba4e173 173 requests.
04f96b73 174
3ba4e173 1750.96 2012-01-20 11:22:00 UTC
91bb5224 176
27829ab7 177 - Added fix for RT 63537 (from Gerv) and tests to check it.
6da8e448 178
3ba4e173 1790.95 2012-01-04 19:34:00 UTC
c8ca5f59 180
27829ab7 181 - Fix regex for JSONP parameter name to be able to include the . character
3ba4e173 182 in Catalyst::Action::Serialize::JSONP. RT#73741
c8ca5f59 183
27829ab7 184 - Add optional location parameter to status_accepted handler. RT#73691 (ghenry)
c8ca5f59 185
3ba4e173 1860.94 2011-12-09 08:35:00 UTC
3c4306f2 187
27829ab7 188 - Add 403 Forbidden and 302 Not Found status methods to
3ba4e173 189 Catalyst::Controller::REST (Caleb Cushing)
d1158d58 190
3ba4e173 1910.93 2011-10-12 11:37:00 America/Chicago
fcc4f3f2 192
27829ab7 193 - Add a "Callback" serializer/deserializer to allow for more customization in
3ba4e173 194 how the REST data is parsed/generated (bphillips)
fcc4f3f2 195
3ba4e173 1960.92 2011-10-01 11:04:00 BST
df5f9ffc 197
27829ab7 198 - Add a Catalyst::Action::DeserializeMultiPart, allowing one part of a multipart
3ba4e173 199 request to be deserialized as the REST data (allowing other parts to be used for
200 file uploads, for example) (bphillips)
3ed677b1 201
3ba4e173 2020.91 2011-08-04 14:37:21 Europe/Berlin
351f252f 203
27829ab7 204 - For the deserialization action class, make the HTTP methods it operates on
3ba4e173 205 configurable on a per-action level (plu, rafl).
1f22d6b3 206
3ba4e173 2070.90 2011-02-25 13:56:00 UTC
8aa1a2ee 208
27829ab7 209 - Remove test which is no longer applicable and fails in the latest Catalyst
3ba4e173 210 release.
f2d34339 211
3ba4e173 2120.89 2011-01-24 21:57:42 UTC
259c53c7 213
27829ab7 214 - All classes are now made immutable. (Dave Rolsky)
f51d80cd 215
27829ab7 216 - Added a Catalyst::Action::REST::ForBrowsers class. This will try to dispatch
3ba4e173 217 GET requests to a foo_GET_html method before trying foo_GET. (Dave Rolsky)
1c4b501b 218
3ba4e173 2190.88 2011-01-11 23:07:00 UTC
8894935c 220
27829ab7 221 - Fix documentation for overriding Serialize and Deserialize actions
3ba4e173 222 in Catalyst::Controller::REST.
04eaf278 223
27829ab7 224 - Avoid warning with empty response bodies and new Catalyst version
3ba4e173 225 (>= 5.80030)
48ff1e96 226
27829ab7 227 - Returning a body of '' is now possible - Catalyst::Action::Serialize
3ba4e173 228 acts like Catalyst::Action::RenderView (>= 0.16) by using the has_body
229 predicate in Catalyst::Response (>= 5.80030)
84b1ebe6 230
3ba4e173 2310.87 2010-11-03 19:46:00 UTC
d5acc73a 232
27829ab7 233 - Fix Request class role when used with new Moose and other request
3ba4e173 234 class roles.
355d4385 235
3ba4e173 2360.86 2010-09-01 23:14:00 BST
786c212f 237
27829ab7 238 - Add rest_serializer_json_options config key useable to set options
3ba4e173 239 like relaxed => 1 to be passed to the JSON serializer (Ton Voon)
786c212f 240
27829ab7 241 - Make Data::Dumper unserializer safer by using a Safe compartment (Ton Voon)
e527bba3 242
3ba4e173 2430.85 2010-05-13 10:09:19 Europe/Berlin
e527bba3 244
27829ab7 245 - Make Catalyst::Action::Serialize::View return directly rather than serializing
3ba4e173 246 a response for 3XX status codes. This stops back-compat breakage from the
247 previous change (in 0.84), whilst also allowing actual data serializers
248 to still handle 3XX.
ad46030d 249
27829ab7 250 - Fix docs in Catalyst::TraitFor::Request::REST::ForBrowsers. (RT#54983)
0fd45d2a 251
3ba4e173 2520.84 2010-05-06 09:27:56 BST
0fd45d2a 253
27829ab7 254 - Revert always using a trait rather than Catalyst::Request::REST to improve
3ba4e173 255 debug messages.
96eccfeb 256
27829ab7 257 - Add a status_multiple_choices helper method to the Controller base class.
96eccfeb 258
27829ab7 259 - Allow 3XX responses to be serialized.
3accd912 260
3ba4e173 2610.83 2010-02-08 22:17:12 UTC
5578f739 262
27829ab7 263 - Make it possible to deserialize a request with a DELETE method. This probably
3ba4e173 264 breaks 'strict' REST guidelines, but is useful for being able to delete multiple
265 resources from a single call by providing a batch delete method.
96a61a60 266
27829ab7 267 - Remove JSONP from the list of default serializers (RT#54336)
3ba4e173 268 Fix MANIFEST (RT#54408)
96a61a60 269
3ba4e173 2700.82 2010-02-04 22:31:57 UTC
8ff24288 271
27829ab7 272 - Integrated Catalyst::Request::REST::ForBrowsers as
3ba4e173 273 Catalyst::TraitFor::Request::ForBrowsers. (Dave Rolsky)
8ff24288 274
27829ab7 275 - Clarified docs so that they encourage the use of the request traits, rather
3ba4e173 276 than using Catalyst::Request::REST. (Dave Rolsky)
8ff24288 277
27829ab7 278 - When Catalyst::Action::REST or Controller::REST automatically add the trait,
3ba4e173 279 your request class will no longer end up getting set to
280 Catalyst::Request::REST. Instead, creates an anon class with the appropriate
281 role. (Dave Rolsky)
04675068 282
27829ab7 283 - Shut up log output from the tests. (Dave Rolsky)
04675068 284
27829ab7 285 - Added a $VERSION to every module, mostly to make sure that when people
3ba4e173 286 install Catalyst::Request::REST::ForBrowsers, they get the version in this
287 distro. (Dave Rolsky)
04675068 288
27829ab7 289 - Change Catalyst::Action::Serialize, Catalyst::Action::Deserialize and
3ba4e173 290 Catalyst::Action::SerializeBase to be more Moose like.
04675068 291
27829ab7 292 - Fix JSON and JSON::XS to encode_blessed. (fREW)
293 - Fix Catalyst::Action::Serialize to use objects instead of classes. (fREW)
294 - Fix doc nits. (RT#53780)
04675068 295
3ba4e173 2960.81 2010-01-14 20:56:00 UTC
890738ab 297
27829ab7 298 - Add a JSONP serialization type.
05009b91 299
3ba4e173 3000.80 2009-12-19 14:54:00 UTC
2b1751a1 301
27829ab7 302 - Convert all classes to Moose
2b1751a1 303
27829ab7 304 - Change Catalyst::Request::REST to be a mostly empty class, with
3ba4e173 305 all the functionality in Catalyst::TraitFor::Request::REST
26b59bcb 306
27829ab7 307 - Simplify _get_allowed_methods method (aristotle)
732d8f5f 308
27829ab7 309 - Rework serializer return so that serializers throw an exception in
3ba4e173 310 the case of issues serializing the data (hobbs).
4f7a48d1 311
3ba4e173 3120.79 2009-12-11 01:08:00 UTC
a400ef8b 313
27829ab7 314 - Cope with invalid (missing required q parameter) header like:
3ba4e173 315 application/json; charset="utf-8"
489ee3ed 316
27829ab7 317 - Fix documentation to not mention deprecated things and generally be
3ba4e173 318 in better style.
489ee3ed 319
27829ab7 320 - Make author information consistant and only in one module.
e1844cd9 321
3ba4e173 3220.78 2009-09-28 15:01:03 BST
a05bebdc 323
27829ab7 324 - Require Moose for the tests (RT#50066).
5ebf67a4 325
3ba4e173 3260.77 2009-08-27 02:21:09 BST
5bbe8fb2 327
27829ab7 328 - Allow dispatching to Catalyst Actions, for use with ActionClasses
3ba4e173 329 etc - fREW
d3f3a2ed 330
27829ab7 331 - Fix test if CATALYST_DEBUG environment variable is set
d3f3a2ed 332
3ba4e173 3330.76 2009-08-21 21:20:52 BST
f3394d8c 334
27829ab7 335 - Added two new status response helpers (202 no content and 410 gone),
3ba4e173 336 and tests - Franck Cuny
5ebf67a4 337
3ba4e173 3380.75 2009-08-17 14:07:41 BST
9eb6ca8b 339
27829ab7 340 - Fix optional test failures in catalyst-action-serialize-accept.t
341 - Added a serializer for JSON::XS
342 - Made test independent of YAML::Syck bugs (dandv)
4ee24376 343
3ba4e173 3440.74 2009-07-22 23:49:16 BST (t0m)
c42820ae 345
27829ab7 346 - Switch from NEXT to MRO::Compat (agladdish).
428ec4a2 347
27829ab7 348 - Add display of additional REST actions in the stats, and also fix a warning
3ba4e173 349 in Catalyst 5.80 when you forward to another action from inside an
350 action_FOO method (as it was confusing the stats).
428ec4a2 351
27829ab7 352 - POD fixes
353 - Catalyst::Action::REST no longer @ISA Catalyst or Catalyst::Controller.
354 - Change constructor to call next::method instead of SUPER::
355 - Change method used to find the application class to be more correct
f41ab757 356
3ba4e173 3570.73 2009-06-27 20:20:09 America/New_York (hdp)
546f2871 358
27829ab7 359 - Packaging fixes
546f2871 360
3ba4e173 3610.72 2009-06-25 14:52:29 America/New_York (hdp)
d1e10509 362
27829ab7 363 - Refresh Module::Install
db8bb647 364
3ba4e173 3650.71 2009-03-28 09:16:09 America/Los_Angeles (hdp)
665a446d 366
27829ab7 367 - Fix RT#44641, missing documented 'end' action
0566b5e4 368
3ba4e173 3690.70 2009-03-27 23:21:17 America/Los_Angeles (hdp)
0566b5e4 370
27829ab7 371 - Tests that use JSON were either not checking for the version or checking in a
372 - way that was a syntax error.
c4ab3598 373
3ba4e173 3740.69 2009-03-26 14:16:03 America/Los_Angeles (hdp)
cbb06078 375
27829ab7 376 - Fix RT#32342, deprecated config loses default map (hdp)
377 - Fix broken insertion of Catalyst::Request::REST for Action::REST (jshirley)
bb55dba1 378
3ba4e173 3790.68 2009-03-25 22:33:38 America/Los_Angeles (hdp)
8088a6f3 380
27829ab7 381 - Remove prompt for ancient and deprecated Data::Denter from Makefile.PL
382 - Remove Data::Dump, which was entirely unused
383 - Stop tests from dying with Catalyst 5.80
ef7fdb48 384
3ba4e173 3850.67 2009-03-25 21:59:59 America/Los_Angeles (hdp)
888f25e3 386
27829ab7 387 - (no changes from 0.67_01)
8b010556 388
3ba4e173 3890.67_01 2009-03-25 09:36:00 America/Los_Angeles (hdp)
7b8c5be2 390
27829ab7 391 - Fix RT#43840, improper app-level config handling
392 - Fix RT#42859, 'wrong' Catalyst dependency
393 - Fix RT#42025, stepping on custom request classes
3d38a43f 394
3ba4e173 3950.65 2008-08-20 10:42:00 America/Los_Angeles (jshirley)
b946af8e 396
27829ab7 397 - Fully revamped tests to work without any JSON support
398 - Final removal of JSON::Syck
399 - Special thanks to jgoulah for helping test this release
bc48916f 400
3ba4e173 4010.64 2008-08-13 08:55:00 America/Los_Angeles (jshirley)
2f7533ed 402
27829ab7 403 - New dist to fix issue with Module::Install
6023cdb2 404
3ba4e173 4050.63 2008-07-09 11:16:00 America/Los_Angeles (jshirley)
ebba5325 406
27829ab7 407 - Changing from JSON::Syck to JSON/JSON::XS
408 - Refactored tests to be more applicable to current state of affairs
df26b361 409
3ba4e173 4100.62 2008-07-02 07:53:00 America/Los_Angeles (jshirley)
832e768d 411
27829ab7 412 - Reshipping with current Module::Install included due to error reports
3ba4e173 413 about failed installs
d6fb033c 414
3ba4e173 4150.61 2008-06-30 12:28:00 America/Los_Angeles (jshirley)
9f16ba15 416
27829ab7 417 - Support official application/json and carp about text/x-json
d4611771 418
27829ab7 419 - Accepted patch from Luke Saunders for processing all accepted content types
bc343d3a 420
3ba4e173 4210.60 2008-01-03 17:23:58 America/Los_Angeles (adam)
422
27829ab7 423 - Updated my contact information.
3ba4e173 424
27829ab7 425 - Fixed RT#30498 - REST controller references Catalyst without
3ba4e173 426 loading it first.
427
27829ab7 428 - Fixed RT#32042 - Import of Params::Validate :all plays badly
3ba4e173 429 with subclasses that have their own validate()
430
27829ab7 431 - Fixed RT#30456 - Debug messages print even with debugging disabled
3ba4e173 432
27829ab7 433 - Fixed an issue where YAML::Syck versions 0.92 require $c->request->body to
3ba4e173 434 be stringified
435
27829ab7 436 - Updated the configuration specifiers to operate more in line with the way
7d5e38b4 437 Catalyst expects. Most notably component based configuration through
438 "Controller::RestClass" now works. "serialize" at the top level simply
439 is suggested defaults that all REST classes inherit.
bc343d3a 440
27829ab7 441 - Fixed 'default' serializer to set a valid Content-Type: header. Fixes
7d5e38b4 442 RT ticket 27949. Note that behavior has changed -- the default
443 serializer must now be specified as a content-type, not as a plugin
444 name. (dmo@roaringpenguin.com)
367b3ff4 445
3ba4e173 4460.41 2007-05-24 14:01:06 America/Los_Angeles (adam)
447
27829ab7 448 - Moved a bogus $self->class to $c->component($self->class)
3ba4e173 449
4500.40 2007-03-09 14:13:29 America/Los_Angeles (adam)
451
27829ab7 452 - Refactored the Content-Type negotiation to live in Catalyst::Request::REST. (drolsky)
453 - Added some useful debugging. (drolsky)
454 - Added a View serializer/deserializer, which simply calls the correct
455 - Catalyst view. ('text/html' => [ 'View', 'TT' ]) (claco, adam)
3ba4e173 456
4570.31 2006-12-06 00:45:02 America/Los_Angeles (adam)
458
27829ab7 459 - Fixed a bug where we would report a blank content-type negotiation.
460 - Added Data::Dump as a dependency.
3ba4e173 461
27829ab7 462 - Made the YAML::HTML view automatically append content-type=text/html on
3ba4e173 463 the resulting URLs.
464
4650.30 2006-12-03 12:24:16 America/Los_Angeles (adam)
466
27829ab7 467 - Updated the Makefile to support optional installation of the different
3ba4e173 468 Serialization formats.
469
27829ab7 470 - Renamed some of the test cases, since the execution order doesn't
3ba4e173 471 matter.
472
27829ab7 473 - Fixed things so that not having a Serialization module returns 415.
474 - Fixed things so that failure to Deserialize sends the proper status.
475 - Refactored the Plugin loading to Catalyst::Action::SerializeBase.
476 - Updated the Documentation.
3ba4e173 477
27829ab7 478 - Added a whole raft of serializers. (JSON, all the Data::Serializer
3ba4e173 479 supported ones, and XML::Simple)
480
27829ab7 481 - Added test cases.
3ba4e173 482
27829ab7 483 - Refactored the Catalyst::Action::REST dispatch, so that the default
3ba4e173 484 method is called before any _METHOD handlers. In addition, moved
485 the 405 Not Implemented handler to be foo_not_implemented, instead
486 of the default sub. (daisuke++ pointed out the inconsistency and
487 provided a patch, and I added the foo_not_implemented support)
488
27829ab7 489 - Added in automated OPTIONS handler, which constructs the allow
3ba4e173 490 header for you, just like the 405 handler. Can be overridden
491 with a normal _METHOD sub.
492
27829ab7 493 - Refactored Test::Rest, so that it uses closures to create the
3ba4e173 494 very similar $test->method() subs.
495
27829ab7 496 - Added tests for Catalyst::Action::REST.
3ba4e173 497
4980.2 2006-11-30 17:14:51 America/Los_Angeles (adam)
499
27829ab7 500 - Added documentation patch from Daisuke Maki (daisuke@endeworks.jp)
501 - Added dependency patch from Daisuke Maki (daisuke@endeworks.jp)
3ba4e173 502
5030.1 2006-11-19 16:24:20 America/Los_Angeles (adam)
504
27829ab7 505 - Added status_accepted (Code 202)
506 - Added a first pass at documentation.
507 - Added in Test Suite
508 - Created Catalyst::Action::Serialize and Catalyst::Action::Deserialize
509 - Added Data::Serializer actions
510 - Added status_created helper method
511 - Added more status_ helpers
3ba4e173 512
27829ab7 513 - Converted error helpers to return an object instead of plain-text. It's
3ba4e173 514 a more consistent model than a text/plain error message.
515
27829ab7 516 - Added logging to 4xx status handlers
bdc54939 517