如何为现有的Ruby on Rails 5应用程序创建REST API?

时间:2016-07-28 19:23:27

标签: ruby-on-rails api rest heroku

我有一个带有ActionCable和Devise gem的Rails 5应用程序,在Heroku上托管了15K用户。许多用户建议为该网站发布移动应用程序。我想首先为网站创建一个基本的移动应用程序。

当我谷歌时,我得到的只是API指南。是否有任何教程或书籍或任何资源显示如何为现有Rails应用程序创建REST API?

有人可以指导如何做到这一点吗?我如何验证用户?我如何使用实时聊天?我应该使用任何宝石吗?请分享如何开始和最佳实践。感谢

8 个答案:

答案 0 :(得分:3)

您可以使用grape gem。查看其Rails integration section

由于您已经有一些路由,只需为您的API选择一个未使用的根路径并将其挂载到那里:

mount Twitter::API => '/api'

答案 1 :(得分:3)

  

是否有任何教程或书籍或任何资源显示如何为现有Rails应用程序创建REST API?

是。这个.wrap()非常有用。他介绍了如何为已经运行的(尽管非常简单的)Rails应用程序设置restful API的基本部分。

它已经有几年了,但仍应该适用于Rails 5。

答案 2 :(得分:1)

我花了几天的时间自己弄清楚。最终,我能够使用宝石“ grape”,“ rack-cors”和“ grape-active_model_serializer”完成此任务,并编写了一个快速教程。应该适用于Rails 5.2和6.0。您可以在这里查看:https://medium.com/@ryanwaldorf/how-to-add-an-api-to-an-existing-rails-app-1d2419ba91bd

希望这对所有人都有帮助!

答案 3 :(得分:0)

我建议您开始寻找JSON响应,在Rails中,您拥有创建Web应用程序和具有相同控制器的API所需的一切。 你需要从'respond_to'开始为JSON。 要开始玩游戏,请使用scaffold进行控制器生成,它将为您提供JSON和HTML的响应程序。

答案 4 :(得分:0)

可能你可以使用 JSONObject inputs = new JSONObject(json); jsonobject = (JSONObject) inputs.get("Request"); JSONObject requestBody = jsonobject.getJSONObject("RequestBody"); JSONObject address = requestBody.getJSONObject("Address"); String mprn = requestBody.getString("MPRN"); String Pno = address.getString("POBoxNumber"); String subB = address.getString("SubBuildingName"); gem,它是rails 5的一部分。如果你当前没有使用Rails 5 api模式,你可以将activemodel serializers gem添加到你的activemodel serializers

可能会tutorial帮助

答案 5 :(得分:0)

我认为您首先要使用API​​身份验证。这款宝石可能适合您的需求: https://github.com/lynndylanhurley/devise_token_auth

答案 6 :(得分:0)

由于您希望将RESTful API与现有的Rails应用程序集成,因此您应该参考this guide

这是一个更加用户友好的指南,介绍如何将Grape(如Nic Nilov提到的)与您的Rails 5应用程序集成。本指南假设您已有一个现有的Rails应用程序。

希望这有帮助!

答案 7 :(得分:-4)

对于Ruby on Rails 5,您可以使用以下命令生成API应用程序:

$ rails new my_api --api

您还可以更改现有应用程序并将其设置为API,并在某些文件中进行一些小的更改。

对于您当前的普通Rails应用,您只需在当前控制器中为JSON添加respond_to即可。例如:

def index
  @tasks = Task.all
  respond_to :html, :json
end

对于用户身份验证,您可以检查Devise gem