- #378: Fix: stop rescuing all exceptions during formatting - @kbarrette.
- #380: Fix:
Formatter#read_body_input
when transfer encoding is chunked - @paulnicholon. - #344: Added
parser :type, nil
which disables input parsing for a given content-type - @dblock. - #381: Added
cascade false
definition at API level to remove theX-Cascade: true
header from the API response - @dblock. - #376: Added
route_param
, syntax sugar for quick declaration of route parameters - @mbleigh. - #347: Fix: handling non-hash body params - @paulnicholon.
- #392: Extracted headers and params from
Endpoint
toGrape::Request
- @niedhui. - #394: Path version no longer overwrites a
version
parameter - @tmornini. - #390: Added default value for an
optional
parameter - @oivoodoo. - #403: Added support for versioning using the
Accept-Version
header - @politician. - #407: Specifying
default_format
will also set the default POST/PUT data parser to the given format - @dblock. - #241: Present with multiple entities using an optional Symbol - @niedhui.
- #412: Fix: specifying
content_type
will also override the selection of the data formatter - @dblock. - #383: Fix: Mounted APIs aren't inheriting settings (including
before
andafter
filters) - @seanmoon. - #408: Fix: Goliath passes request header keys as symbols not strings - @bobek.
- #417: Fix: Rails 4 does not rewind input, causes POSTed data to be empty - @dblock.
- Your contribution here.
- #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. - #357: Grape now requires Rack 1.3.0 or newer - @jhecking.
- #320: API
namespace
now supportsrequirements
- @niedhui. - #353: Revert to standard Ruby logger formatter,
require active_support/all
if you want old behavior - @rhunter, @dblock. - Fix:
undefined method 'call' for nil:NilClass
for an API method implementation without a block, now returns an empty string - @dblock.
- #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.