我有一个带有ActionCable和Devise gem的Rails 5应用程序,在Heroku上托管了15K用户。许多用户建议为该网站发布移动应用程序。我想首先为网站创建一个基本的移动应用程序。
当我谷歌时,我得到的只是API指南。是否有任何教程或书籍或任何资源显示如何为现有Rails应用程序创建REST API?
有人可以指导如何做到这一点吗?我如何验证用户?我如何使用实时聊天?我应该使用任何宝石吗?请分享如何开始和最佳实践。感谢
答案 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