Почтальон: маршрутов не найдено [POST] "/ api / v1" - PullRequest
0 голосов
/ 08 февраля 2020

Я настраиваю 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

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...