我有一个静态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提供服务?
答案 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