0xSina
0xSina

Reputation: 21573

Return empty body with Sinatra

How can I specify sinatra to return an empty body with status of 200?

I can do body "" but is there a more explicit way of doing this?

Upvotes: 22

Views: 17246

Answers (2)

ian
ian

Reputation: 12251

Also from the docs:

To immediately stop a request within a filter or route use:

halt

You can also specify the status when halting:

halt 410

So in the case where you only need a 200 status it would be:

halt 200

halt is one of the most useful methods Sinatra makes available to you, worth reading the docs for. I often use it to return error messages early in processing a route, for example when required params are missing.

Upvotes: 10

DMKE
DMKE

Reputation: 4603

Using the Rack interface

From the documentation:

You can return any object that would either be a valid Rack response, Rack body object or HTTP status code:

  • An Array with three elements: [status (Fixnum), headers (Hash), response body (responds to #each)]
  • An Array with two elements: [status (Fixnum), response body (responds to #each)]
  • An object that responds to #each and passes nothing but strings to the given block
  • A Fixnum representing the status code

So returning either of

  1. [200, {}, ['']]
  2. [200, ['']]
  3. ['']
  4. 200

should do the trick.

Using helpers

In Setting Body, Status Code and Headers, the helper methods status and body (and headers) are introduced:

get '/nothing' do
  status 200
  body ''
end

Upvotes: 33

Related Questions