服务于静态json文件的rails在浏览器中或通过get请求返回不同的内容?

时间:2018-03-15 08:41:22

标签: ruby-on-rails json

我有一个静态json文件,我需要提供内容类型:application / json,以允许从我的rails应用程序到相应的Android应用程序的一些深层链接。对于这个谷歌,期待一个静态文件的URL,如下所示:domain.com/.well-known/assetlinks.json和正确的内容类型。

所以在我的rails应用程序中,我有以下文件app/views/static/assetlinks.json

在我的routes.rb中我有:

...

resources :static, except: [:new, :create, :edit, :show, :update, :destroy ]
get '.well-known/assetlinks.json' => 'static#assetlinks'

...

如果我然后在浏览器中加载domain.com/.well-known/assetlinks.json,则会正确提供,并将标头设置为Content-Type:application / json。但是如果我使用带有相同URL的get请求的hurl.it或postman,我会得到一个带有.html.erb模板的响应,其中包含assetlinks.json内容和Content-Type:text / html;字符集= UTF-8。

这是什么样的巫术?如何使其始终只为具有正确内容类型的JSON提供服务?

2 个答案:

答案 0 :(得分:0)

我不确定100%但是设置:

get '.well-known/assetlinks' => 'static#assetlinks'

没有.json

在你的控制器上

respond_to do |format|
  format.json do .....
  end
end

这样它只会响应json。

您可以通过请求json格式来强制它 domain.com/.well-known/assetlinks.json

你不必把.json放在routes.rb

答案 1 :(得分:0)

您只需在路由文件中设置默认格式,它就会针对所有请求正确响应,而不指定格式。

data=[[45, 12],[55,21],[19, -2],[104, 20]]
retData= ['Close' if i>54 and j>7 else 'Open' for [i,j] in data]
# No Syntax error here!!
return retData