使用Rails API和JSON创建用户?

 jeson1232 发布于 2023-02-13 15:02

所以我在Rails中测试一个非常简单的API,看看我是否可以使用Chrome插件Postman(REST客户端扩展)在本地创建用户.

在我的rails应用程序中,我为我的API设置了一个文件夹/命名空间,每当我尝试创建我的用户时,我都会收到以下错误:缺少模板api/v1/users/create,application/create with {:locale => [:en],:formats => [:json],:handlers => [:erb,:builder,:raw,:ruby,:jbuilder,:coffee]}.搜索范围:*"PATH/app/views"

我正在使用Rails 4.0.1和Ruby 2.0

我在下面发布了我发布的截图:

截图1

module Api
     module V1
    class UsersController < ApplicationController
        class User < ::User
            # add any hacks
        end

        respond_to :json

        def index
            respond_with User.all
        end

        def show
            respond_with User.find(params[:id])
        end

        def new
            @user = User.new
        end

        def create
            @user = User.create(user_params)
            # respond_with(@user)

            if @user.save
                # render json: @user, status: :created, location: @user
                redirect_to @user
            end
        end

        private

            def user_params
              params.require(:user).permit(:name, :age, :location) if params[:user]
            end
    end
  end
end

所以基于我的user_params,我应该能够创建一个新用户,对吗?如果您需要任何其他信息,请告诉我,我会尽快回复!谢谢!

1 个回答
  • 您可以使用API​​创建用户.

    1)首先,您需要在您的routes.rb中放置适当的资源:

    YourApp::Application.routes.draw do
      namespace :api do
        namespace :v1 do
         resources :users
        end
        namespace :v2 do
        # ... if needed
        end
      end
    
      root to: 'users#index'
    end
    

    2)您需要创建一个RESTfull样式的控制器来处理请求.这里可以实现您的"创建"操作.

    def create
      respond_with User.create(fio: params[:fio], phone: params[:phone], region: params[:region], updated_at: Time.now)
    end
    

    使用respond_to的'create'示例:

    def create
        # ...
        respond_to do |format|
          format.html {render text: "Your data was sucessfully loaded. Thanks"}
          format.json { 
                       User.create(... params ...)
                       render text: User.last.to_json  # !
                      }
        end
      end
    

    如果您需要特殊的回复,请参阅有关respond_with和respond_to的文档.

    也可以是关于API构建的有用的railscasts剧集:#350和#352

    PS文件夹/名称空间/ v1/users_controller应与模块Api中的类名相同

    PS2您可以观察我的应用程序,您可以在其中找到有用的东西(与您的应用程序相同 - 用于创建记录的简单API) - myApp

    users_controller示例(controllers/api/v1/users_controller.rb):

    #encoding: utf-8
    
        module Api
          module V1
            class UsersController < ApplicationController # Api::BaseController
              before_filter :authenticate_user!, except: [:create, :index]
    
              respond_to :json
    
              def index
            #respond_with
    
                respond_to do |format|
                  format.html {render text: "Your data was sucessfully loaded. Thanks"}
                  format.json { render text: User.last.to_json }
                end
              end
    
              def show
                respond_with User.find(params[:id])
              end
    
              def create
                respond_with User.create(access_token: params[:access_token], city: params[:city], created_at: Time.now, phone: params[:phone], region: params[:region], updated_at: Time.now)
              end
    
              def update
                respond_with User.update(params[:id], params[:users])
              end
    
              def destroy
                respond_with User.destroy(params[:id])
              end
            end
          end
        end
    

    2023-02-13 15:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有