有没有办法为现有数据库自动生成Rails API?我有来自php项目的mysql DB,我需要为它生成REST API。
答案 0 :(得分:2)
使用rails 4,您可以使用scaffold,注意保持数据模型与旧数据库完全相同(即相同的表和列名称),然后删除使用脚手架生成的迁移。
让我们假设您有一个名为Posts的表,其中包含列:subject和body。
你可以跑:
rails g scaffold post subject:string body:text
然后从db / migrate中删除迁移。
现在假设您设置rails应用程序以通过config / database.yml正确访问数据库,您应该已经设置并准备使用json API,因为rails scaffold生成index.json.jbuilder和show.json .jbuilder,用于您构建的每个资源。
您可能必须编辑应用程序控制器以允许外部API请求,但这应该只在您计划POST到您的API时才重要:
如果您确实需要POST,请在app / controllers / application_controller.rb顶部更改此行:
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
到此:
protect_from_forgery with: :null_session
GET请求应该无需修改应用程序控制器即可。
忘记提及,要访问这些资源,您将使用?format = json作为参数,所以:
http://localhost:3000/posts?format=json
或
http://localhost:3000/posts/1?format=json
将返回所有帖子或单个帖子的json响应。
答案 1 :(得分:1)
你可以使用AutomaticApiRest [automaticapirest.info],这个项目是我自己去年创建的。基本上,这个工具允许在几秒钟内创建数据库(MySQL)的API REST。
下载源代码或克隆代理商。
将其放在/var/www/YourWebPage/
(适用于Apache)。
答案 2 :(得分:1)
有一个Node.js替代品,您可以在其中使用任何SQL数据库(MySQL,MSSQL,SQL Server,Aurora,PostgreSQL和SQLite)。我是该项目的核心提交者之一。
使用以下命令从npm全局安装CLI工具(xc-cli):
npm install -g xc-cli
然后您可以使用以下命令轻松创建项目:
xc new <project_name>
注意:它将提示您输入数据库连接详细信息,只需输入连接详细信息即可完成其余的代码生成。而且您必须安装GUI工具才能进行代码生成(从此处下载:https://github.com/xgenecloud/xc-desktop-app/releases)
有关更多信息,请参阅GitHub存储库:https://github.com/xgenecloud/xgenecloud
有关文档,请参考:http://docs.xgenecloud.com/