Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Return empty body with Sinatra

Tags:

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?

like image 965
0xSina Avatar asked Jul 12 '13 19:07

0xSina


2 Answers

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
like image 165
DMKE Avatar answered Oct 06 '22 00:10

DMKE


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.

like image 23
ian Avatar answered Oct 05 '22 23:10

ian