有什么方法可以自动为现有数据库生成Rails API吗?我有来自php项目的mysql数据库,我需要为其生成REST API。

最佳答案

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

假设您有一个名为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:您支持的每个资​​源。

您可能必须编辑应用程序 Controller 以允许外部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请求应在不修改应用程序 Controller 的情况下工作。

忘了提一下,要访问这些资源,您将使用?format = json作为参数,因此:
http://localhost:3000/posts?format=json

或者
http://localhost:3000/posts/1?format=json

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

关于ruby-on-rails - 自动为现有数据库生成API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25850150/

10-12 00:18
查看更多