6

Sinatraで問題が発生し、jsonだけでは応答できず、どこにも適切なsinatraドキュメントが見つからず、ほとんどのものが古くなっているようです。

とにかく、ここにコードがあります:

module MemcachedManager
  class App < Sinatra::Base
    register Sinatra::Contrib
    helpers Sinatra::JSON

    get '/' do
      json({ hello: 'world' })
    end
  end
end

MemcachedManager::App.run! if __FILE__ == $0

私が得る応答は次のとおりです。

"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">\n<html><body><p>{\"hello\":\"world\"}</p></body></html>\n"

jsonの部分だけであるはずだったところ。要求しなかったのに、なぜhtmlタグをレンダリングするのですか?

4

2 に答える 2

6

このブログ投稿を見たことがありますか?

require 'json'

get '/example.json' do
  content_type :json
  { :key1 => 'value1', :key2 => 'value2' }.to_json
end

また、これを次のように変更します。

get '/example.json', :provides => :json do

ルートを使用してHTML/XML呼び出しを停止します。sinatra-contrib gemを使用していて、Rubyはこれらすべての親などを必要としないため、例として示したコードを次のように簡略化することもできます。

require 'sinatra/json'

module MemcachedManager    
  class App < Sinatra::Base
    helpers Sinatra::JSON
    get '/', :provides => :json do
      json hello: 'world'
    end
  end
end

MemcachedManager::App.run! if __FILE__ == $0
于 2013-02-01T00:02:13.997 に答える
1

入れてみてください

content_type :json

json(...)電話の前に

于 2013-01-31T22:05:41.620 に答える