- #356: Fix: presenting collections other than
Array
(eg.ActiveRecord::Relation
) - @zimbatm. - #352: Fix: using
Rack::JSONP
withGrape::Entity
responses - @deckchair. - #347: Grape will accept any valid JSON as PUT or POST, including strings, symbols and arrays - @qqshfox, @dblock.
- #347: JSON format APIs always return valid JSON, eg. strings are now returned as
"string"
and no longerstring
- @dblock. - Raw body input from POST and PUT requests (
env['rack.input'].read
) is now available inapi.request.input
- @dblock. - Parsed body input from POST and PUT requests is now available in
api.request.body
- @dblock. - #343: Fix: return
Content-Type: text/plain
with error 405 - @gustavosaume, @wyattisimo. - Your contribution here.
- #294: Extracted
Grape::Entity
into a grape-entity gem - @agileanimal. - #340, #342: Added
:cascade
option toversion
to allow disabling of rack/mount cascade behavior - @dieb. - #333: Added support for validation of arrays in
params
- @flyerhzm. - #306: Added I18n support for all Grape exceptions - @niedhui.
- #309: Added XML support to the entity presenter - @johnnyiller, @dblock.
- #131: Added instructions for Grape API reloading in Rails - @jyn, @dblock.
- #317: Added
headers
that returns a hash of parsed HTTP request headers - @dblock. - #332:
Grape::Exceptions::Validation
now contains full nested parameter names - @alovak. - #328: API version can now be specified as both String and Symbol - @dblock.
- #190: When you add a
GET
route for a resource, a route for theHEAD
method will also be added automatically. You can disable this behavior withdo_not_route_head!
- @dblock. - Added
do_not_route_options!
, which disables the automatic creation of theOPTIONS
route - @dblock. - #309: An XML format API will return an error instead of returning a string representation of the response if the latter cannot be converted to XML - @dblock.
- A formatter that raises an exception will cause the API to return a 500 error - @dblock.
- #322: When returning a 406 status, Grape will include the requested format or content-type in the response body - @dblock.
- #60: Fix: mounting of a Grape API onto a path - @dblock.
- #335: Fix: request body parameters from a
PATCH
request not available inparams
- @FreakenK.
- Fix: support content-type with character set when parsing POST and PUT input - @dblock.
- Fix: CVE-2013-0175, multi_xml parse vulnerability, require multi_xml 0.5.2 - @dblock.
- Added support for custom parsers via
parser
, in addition to built-in multipart, JSON and XML parsers - @dblock. - Removed
body_params
, data sent via a POST or PUT with a supported content-type is merged intoparams
- @dblock. - Setting
format
will automatically remove other content-types by callingcontent_type
- @dblock. - Setting
content_type
will prevent any input data other than the matching content-type or any Rack-supported form and parseable media types (application/x-www-form-urlencoded
,multipart/form-data
,multipart/related
andmultipart/mixed
) from being parsed - @dblock. - #305: Fix: presenting arrays of objects via
represent
or when auto-detecting anEntity
constant in the objects being presented - @brandonweiss. - #306: Added i18n support for validation error messages - @niedhui.
- #297: Added
default_error_formatter
- @dblock. - #297: Setting
format
will automatically setdefault_error_formatter
- @dblock. - #295: Storing original API source block in endpoint's
source
attribute - @dblock. - #293: Added options to
cookies.delete
, enables passing a path - @inst. - #174: The value of
env['PATH_INFO']
is no longer altered withpath
versioning - @dblock. - #296: Fix: ArgumentError with default error formatter - @dblock.
- #298: Fix: subsequent calls to
body_params
would fail due to IO read - @justinmcp. - #301: Fix: symbol memory leak in cookie and formatter middleware - @dblock.
- #300: Fix
Grape::API.routes
to include mounted api routes - @aiwilliams. - #302: Fix: removed redundant
autoload
entries - @ugisozols. - #172: Fix: MultiJson deprecated methods warnings - @dblock.
- #133: Fix: header-based versioning with use of
prefix
- @seanmoon, @dblock. - #280: Fix: grouped parameters mangled in
route_params
hash - @marcusg, @dblock. - #304: Fix:
present x, :with => Entity
returns class references withformat :json
- @dblock. - #196: Fix: root requests don't work with
prefix
- @dblock.
- #179: Using
content_type
will remove all default content-types - @dblock. - #265: Fix: Moved
ValidationError
intoGrape::Exceptions
- @thepumpkin1979. - #269: Fix:
LocalJumpError
will not be raised when using explict return in API methods - @simulacre. - #86: Fix Path-based versioning not recognizing
/
route - @walski. - #273: Disabled formatting via
serializable_hash
and added support forformat :serializable_hash
- @dblock. - #277: Added a DSL to declare
formatter
in API settings - @tim-vandecasteele. - #284: Added a DSL to declare
error_formatter
in API settings - @dblock. - #285: Removed
error_format
from API settings, now matches request format - @dblock. - #290: The default error format for XML is now
error/message
instead ofhash/error
- @dpsk. - #44: Pass
env
into formatters to enable templating - @dblock.
- #201, #236, #221: Added coercion and validations support to
params
DSL - @schmurfy, @tim-vandecasteele, @adamgotterer. - #204: Added ability to declare shared
params
atnamespace
level - @tim-vandecasteele. - #234: Added a DSL for creating entities via mixin - @mbleigh.
- #240: Define API response format from a query string
format
parameter, if specified - @neetiraj. - Adds Endpoint#declared to easily filter out unexpected params. - @mbleigh
- #248: Fix: API
version
returns last version set - @narkoz. - #242: Fix: permanent redirect status should be
301
, was304
- @adamgotterer. - #211: Fix: custom validations are no longer triggered when optional and parameter is not present - @adamgotterer.
- #210: Fix:
Endpoint#body_params
causing undefined method 'size' - @adamgotterer. - #205: Fix: Corrected parsing of empty JSON body on POST/PUT - @tim-vandecasteele.
- #181: Fix: Corrected JSON serialization of nested hashes containing
Grape::Entity
instances - @benrosenblum. - #203: Added a check to
Entity#serializable_hash
that verifies an entity exists on an object - @adamgotterer. - #208:
Entity#serializable_hash
must also check if attribute is generated by a user supplied block - @ppadron. - #252: Resources that don't respond to a requested HTTP method return 405 (Method Not Allowed) instead of 404 (Not Found) - @simulacre
- #186: Fix: helpers allow multiple calls with modules and blocks - @ppadron.
- #188: Fix: multi-method routes append '(.:format)' only once - @kainosnoema.
- #64, #180: Added support to
GET
request bodies as parameters - @bobbytables. - #175: Added support for API versioning based on a request parameter - @jackcasey.
- #168: Fix: Formatter can parse symbol keys in the headers hash - @netmask.
- #169: Silence multi_json deprecation warnings - @whiteley.
- #166: Added support for
redirect
, including permanent and temporary - @allenwei. - #159: Added
:requirements
to routes, allowing to use reserved characters in paths - @gaiottino. - #156: Added support for adding formatters to entities - @bobbytables.
- #183: Added ability to include documentation in entities - @flah00.
- #189:
HEAD
requests no longer return a body - @stephencelis. - #97: Allow overriding
Content-Type
- @dblock.
- Added support for inheriting exposures from entities - @bobbytables.
- Extended formatting with
default_format
- @dblock. - Added support for cookies - @lukaszsliwa.
- Added support for declaring additional content-types - @joeyAghion.
- Added support for HTTP PATCH - @LTe.
- Added support for describing, documenting and reflecting APIs - @dblock.
- Added support for anchoring and vendoring - @jwkoelewijn.
- Added support for HTTP OPTIONS - @grimen.
- Added support for silencing logger - @evansj.
- Added support for helper modules - @freelancing-god.
- Added support for Accept header-based versioning - @jch, @rodzyn.
- Added support for mounting APIs and other Rack applications within APIs - @mbleigh.
- Added entities, multiple object representations - @mbleigh.
- Added ability to handle XML in the incoming request body - @jwillis.
- Added support for a configurable logger - @mbleigh.
- Added support for before and after filters - @mbleigh.
- Extended
rescue_from
, which can now take a block - @dblock.
- Extended exception handling to all exceptions - @dblock.
- Added support for returning JSON objects from within error blocks - @dblock.
- Added support for handling incoming JSON in body - @tedkulp.
- Added support for HTTP digest authentication - @daddz.
- Allow multiple definitions of the same endpoint under multiple versions - @chrisrhoden.
- Added support for multipart URL parameters - @mcastilho.
- Added support for custom formatters - @spraints.
- Added support for JSON format in route matching - @aiwilliams.
- Added suport for custom middleware - @mbleigh.
- Endpoints properly reset between each request - @mbleigh.
- Initial public release - @mbleigh.