Ruby-RESTful API

问题描述 投票:0回答:2

我正在尝试使用ruby及其RESTful路由构建RESTful API。 我对ruby完全陌生(这是我的第一个项目),并且发现它的学习曲线非常陡峭。 我试图生成一个简单的用户模型,并试图用它创建一个CRUD示例。 目前,我坚持从发布的json对象在控制器内部创建用户对象。 我已经实现了自己的create方法,并试图使其回显我发布到它的json对象。 由于某种原因,我得到的只是404返回和显示我的溃败的页面。 这是我用来实现API的模型,控制器,路由文件和迁移文件,为什么它不能按预期工作?

用户模型:

#the user model
class User < ActiveRecord::Base
  validates :password, :email, :first_name, :last_name, :presence =>true
  validates_uniqueness_of :email

end

数据库迁移文件:

#migration file
class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :last_name, :null => false
      t.string :email, :null => false
      t.string :first_name, :null => false
      t.string :password, :null => false

      t.timestamps
    end
  end
end

路线文件:

Rails.application.routes.draw do

  # Define api routes for user
  namespace :api do
   resources :user, :defaults => { :format => 'json' }
  end
end

用户控制器文件:

#user controller 
class UserController < ApplicationController
  def create
    puts params
  end
end

我究竟做错了什么? 为什么我的发布对象没有显示在控制台上?

ruby-on-rails ruby rest ruby-on-rails-4 restful-architecture
2个回答
0
投票

在用户控制器中的“创建”操作中,尝试重定向到另一个页面或呈现另一个视图。 我相信这将消除路由错误。

class UserController < ApplicationController
  def create
    puts params
    redirect_to(another_page)
  end
end

0
投票

最简单的方法是将该行放入控制器中。

class UserController < ApplicationController
  skip_before_filter  :verify_authenticity_token
  def create
    puts params
  end
end

由于您是新手,所以不要因为陷入困境而使用上述方法。 有关详细信息,请参见此链接

并检查您允许的参数

CSRF令牌的另一种解决方案是在标头中传递它,例如:

headers: {
  'X-Transaction': 'POST Example',
  'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
© www.soinside.com 2019 - 2024. All rights reserved.