Mysql Sinatra不工作时的REST API路由
我正在尝试创建一个简单的Sinatra应用程序,它从数据库中提取大量邮政编码,并以JSON格式呈现。我现在有两个get声明Mysql Sinatra不工作时的REST API路由,mysql,ruby,sinatra,Mysql,Ruby,Sinatra,我正在尝试创建一个简单的Sinatra应用程序,它从数据库中提取大量邮政编码,并以JSON格式呈现。我现在有两个get声明 get '/postalcodes' do PostalCodes.all.to_json only: [:CountryCode, :PostalCode, :PlaceName, :AdminName1, :AdminCode1, :AdminName2, :AdminCode2, :AdminName3, :AdminCode3, :Latitude,
get '/postalcodes' do
PostalCodes.all.to_json only: [:CountryCode, :PostalCode, :PlaceName, :AdminName1, :AdminCode1, :AdminName2, :AdminCode2, :AdminName3, :AdminCode3, :Latitude, :Longitude, :Accuracy]
end
get '/postalcodes/:countrycode' do
PostalCodes.find(params[:countrycode]).to_json only: [:CountryCode, :PostalCode, :PlaceName, :AdminName1, :AdminCode1, :AdminName2, :AdminCode2, :AdminName3, :AdminCode3, :Latitude, :Longitude, :Accuracy]
end
第一个GET可以正常工作,但我希望可以输入URI:
localhost:3000/postalcodes/US
获取所有国家代码为“US”的邮政编码。嗯,它不起作用了 假设您正在使用activerecord处理PostalCodes的数据库,您可以这样做:
PostalCodes.where("CountryCode" => params[:countrycode].to_s).all
我对数据库中的列名做了进一步的假设,因此我希望即使特定代码可能不起作用,也能理解基本的想法。Ruby对列名的约定是snake-case,对于模型来说是单数的,仅供参考。对于有问题的查询,您需要执行PostalCodes.whereCountryCode:params[:countrycode]来检索记录。