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 привело к сбою? И как понять сообщение "ОШИБКА неверного размера тела"? В любом случае, спасибо всем, кто предоставил предложения!