Rails 4 - конечная точка для обратного вызова API

Я недавно обновил с Rails 3.2 до Rails 4 и теперь у меня проблемы с одной из конечных точек моего приложения.

Я пытаюсь получить внешний сервис (Hellosign), чтобы поместить JSON в мое приложение после того, как пользователь выполнит действие. Для этого моя конечная точка должна вернуть HTTP-код 200 и тело ответа, содержащее следующий текст: "Привет, событие API получено"

Это хорошо работало в Rails 3.2, но у меня возникли проблемы с этим в Rails 4. Я бы настроил маршрут для этого в config/routes.rb

post 'document' => 'requests#document'

Моя модель пользователя включает в себя has_many :requests, и моя модель запроса включает в себя belongs_to :account, Я использую последнюю версию Devise.

Урезанная версия контроллера запросов выглядит следующим образом:

class RequestsController < ApplicationController
  before_filter :authenticate_user!, except: [:document]
  skip_before_action :verify_authenticity_token, :only => [:document]

  def document
    render text: "Hello API Event Received"
    @json = JSON.parse(params["json"])
  end
end

Я пропускаю проверку подлинности Devise и проверку токена подлинности для document действие, чтобы он мог фактически получить POST от API, который имеет свои собственные протоколы аутентификации.

ПРОБЛЕМА. Я получаю сообщение от API о том, что обратный вызов не выполняется с ошибкой "Доступ запрещен". Когда я проверяю производственные журналы в Heroku, я получаю ERROR invalid body size сообщение об ошибке.

Я думаю, что что-то изменилось в Rails 4 с Devise, и я больше не могу использовать before_filter а также skip_before_action биты, чтобы позволить document действия, чтобы служить в качестве публичной конечной точки.

Любая помощь приветствуется!

1 ответ

Гррр, я выяснил проблему. Конечная точка, которую я указал для используемого API http скорее, чем https, Все работает плавно теперь после поставки https в HelloSign API. Тем не менее, конечная точка, которую я поставил (с http) работал с Rails 3.2 даже после того, как я добавил SSL в свое приложение... что в обновлении Rails 4 привело к сбою? И как понять сообщение "ОШИБКА неверного размера тела"? В любом случае, спасибо всем, кто предоставил предложения!

Другие вопросы по тегам