0

簡単な API を作成しましたが、ルートと API に何か違和感があります。API を書くのは初めてで、ROR コードを書くのはほんの数か月です。以下のコードを見て、それをまっすぐにするのを手伝ってください!!

API がhttps://api.xxxxx.com/v1/xm ​​l? username=u_name&password=passwd& to=xxxxx&from=xxxx&message=textのようなリクエストに応答することを望みます

サブドメインも機能していないようです。

ルート

  namespace :api, :path => "", constraints: {subdomain: 'api'} do
namespace :v1  do
  namespace :json, defaults: {format: :json} do
    resources :messages
    resources :balance
  end

  namespace :xml, defaults: {format: :xml} do
    resources :messages
    resources :balance
  end

end

end

これらはjson APIのコントローラーです

メッセージ コントローラー:

class Api::V1::Json::MessagesController < ApplicationController
before_filter :authenticate


def show

end

def create
    @user = current_user
    @message = Message.new(params[:message])
    if @message.save
      MessageWorker.perform_async(@message.id, lists, current_user.id)
      render json: {status: "success", to: @message.count, from: @message.from, 
                    balance: @user.balance, message: @message.message}, 
                    time: @message.created_at} 
    else
       render status: 400 
    end
end


def authenticate
    authenticate_or_request_with_http_basic do |username,password|
      resource = User.find_by_email(username)
      if resource.valid_password?(password)
        sign_in :user, resource
      end
    end
end

end

バランスコントローラー:

class Api::V1::Json::BalanceController < ApplicationController
before_filter :authenticate


def show
    @balance = current_user.balance
    render json: {user: current_user.name.titleize, balance: "#{current_user.currency}: #{@balance}"}

end

def authenticate
    authenticate_or_request_with_http_basic do |username,password|
      resource = User.find_by_email(username)
      if resource.valid_password?(password)
        sign_in :user, resource
      end
    end
end

end
4

1 に答える 1