自动为现有数据库生成API

Ser*_*nko 6 api ruby-on-rails

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

joh*_*400 2

使用rails 4,您可以使用脚手架,注意保持数据模型与旧数据库完全相同(即相同的表和列名称),然后删除使用脚手架生成的迁移。

假设您有一个名为 Posts 的表,其中包含以下列:主题和正文。

你可以运行:

rails g scaffold post subject:string body:text
Run Code Online (Sandbox Code Playgroud)

然后从 db/migrate 中删除迁移。

现在假设您设置了 Rails 应用程序以通过 config/database.yml 正确访问数据库,您应该有一个 json API 已全部设置完毕并可供使用,因为 Railsscaffold 会生成 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
Run Code Online (Sandbox Code Playgroud)

对此:

protect_from_forgery with: :null_session
Run Code Online (Sandbox Code Playgroud)

GET 请求应该可以在不修改应用程序控制器的情况下工作。

忘记提及,要访问这些资源,您将使用 ?format=json 作为参数,因此:

http://localhost:3000/posts?format=json
Run Code Online (Sandbox Code Playgroud)

或者

http://localhost:3000/posts/1?format=json
Run Code Online (Sandbox Code Playgroud)

将返回所有帖子或单个帖子的 json 响应。