有什么方法可以自动为现有数据库生成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/