【问题标题】:REST API Routes with Sinatra not working带有 Sinatra 的 REST API 路由不起作用
【发布时间】:2015-03-30 13:04:36
【问题描述】:

我正在尝试创建一个简单的 Sinatra 应用程序,该应用程序从数据库中提取大量邮政编码并将其呈现为 JSON。我现在有两个 get 语句

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”的邮政编码。好吧,它不工作。

【问题讨论】:

  • Ruby 的列名约定是蛇形大小写,模型是单数,仅供参考。对于有问题的查询,您需要执行 PostalCodes.where(CountryCode: params[:countrycode]) 来检索记录。

标签: mysql ruby sinatra


【解决方案1】:

假设您使用activerecord 处理PostalCodes 的数据库,您会这样做:

PostalCodes.where("CountryCode" => params[:countrycode].to_s).all

我对您的数据库中的列名做了进一步的假设,所以我希望即使特定代码可能不起作用,也能理解基本想法。

【讨论】:

    猜你喜欢
    • 2020-10-07
    • 2019-05-03
    • 2014-09-21
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2016-11-05
    相关资源
    最近更新 更多