自动为现有数据库生成API

时间:2014-09-15 14:15:38

标签: ruby-on-rails api

有没有办法为现有数据库自动生成Rails API?我有来自php项目的mysql DB,我需要为它生成REST API。

3 个答案:

答案 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。

功能

  1. 以秒为单位创建MySQL数据库的强大API REST。
  2. 原位管理API,不需要额外的数据库。
  3. 私人表格和字段。
  4. 自定义查询。
  5. 安装

    1. 下载源代码或克隆代理商。

      git clone https://github.com/GeekyTheory/Automatic-API-REST

    2. 将其放在/var/www/YourWebPage/(适用于Apache)。

    3. 打开文件 config.php 并使用服务器credencials填写所有字段。
    4. 转到 domain.com/AutomaticaApiRest

答案 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/