Я настраиваю REST API, где устройство iOS будет связываться с приложением rails.
Я могу успешно передать параметры от iOS до /api/v1
для аутентификации с помощью warden и обновления пользователь.
Теперь мой вопрос; почему передача параметров из iOS работает, но как только я пытаюсь просмотреть ответ json с url: http://192.168.10.249:3002/api/v1/update_cordinates
в почтальоне, сервер выходит из печати
ActionController::RoutingError (No route matches [POST] "/api/v1"):
контроллер Api
class Api::ApiController < ActionController::Base
protect_from_forgery with: :null_session
rescue_from ActiveRecord::RecordNotFound, with: :not_found
def current_user
token = request.headers['Authorization'].presence
if token
@current_user ||= User.find_by_auth_token(token)
end
end
def authenticate_with_token
render json: {errors: "Not Authenticated"}, status: :unauthorized unless current_user.present?
end
def not_found
render json: {errors: 'Not found'}, status: 404
end
end
Контроллер сеансов
class Api::V1::SessionsController < Api::ApiController
respond_to :json
before_action :ensure_params_exist, only: [:create, :update_coordinates]
skip_before_action :verify_authenticity_token, only: :update_coordinates
def create
resource = User.find_for_database_authenticatio(email: params[:user][:email])
return invalid_login_attempt unless resource
if resource.valid_password?(params[:user][:password])
resource.update(devise_type: params[:user][:devise_type], devise_token: params[:user][:devise_token], auth_token: Devise.friendly_token)
sign_in("user", resource)
render json: {status: "successful", user: resource}
return
end
invalid_login_attempt
end
def update_coordinates
return invalid_login_attempt unless current_user
if current_user
current_user.update(lat: params[:user][:lat], lng: params[:user][:lng], devise_token: params[:user][:device_token], device_type: params[:user][:device_type])
render json: {status: "successful", user: current_user}
end
end
protected
def ensure_params_exist
return unless params[:user].blank?
render json: {status: "failed", message: "Missing User Param"}
end
def invalid_login_attempt
warden.custom_failure!
render json: {status: "failed", message: "Error with your email or password"}
end
end
маршруты
Rails.application.routes.draw do
devise_for :users, :controllers => { registrations: 'registrations', sessions: 'sessions', :passwords => 'passwords' }
namespace :api do
namespace :v1 do
devise_scope :user do
post 'login' => 'sessions#create'
post 'update_coordinates' => 'sessions#update_coordinates'
end
end
end
end
Что я делаю не так?