Sto implementando una semplice API nella mia applicazione per comunicare con un'applicazione Android. Sto cercando di usare AbstractController :: Metal principalmente per le prestazioni. Il problema che sto avendo è che il rendering sta ignorando l'opzione di stato che sto passando.Rails 4 AbstractController :: Metal rendering con stato! = 200 (vale a dire 401, 404)
esempio molto semplice:
class Api::V1::ApiController < ActionController::Metal
include AbstractController::Rendering
include ActionController::Renderers::All
include ActionController::RackDelegation
include ActionController::MimeResponds
end
class Api::V1::SessionsController < Api::V1::ApiController
def show
render status: :unauthorized # using 401 yields the same result
end
end
Calling
curl -v -X GET http://app.dev:3000/api/v1/sessions.json
mi aspetto di ricevere un 401, ma invece ho un 200 OK:
> GET /api/v1/sessions.json HTTP/1.1
> User-Agent: curl/7.30.0
> Host: app.dev:3000
> Accept: */*
>
< HTTP/1.1 200 OK
Tutte le idee? Sovrascrivere response.status è l'unico lavoro che ho trovato fino ad ora, ma onestamente sembra un brutto scherzo.
Grazie in anticipo per i vostri approfondimenti.
Sei sicuro di '/ api/v1/sessions.json' va alla tua azione 'show' action? e sembra invece di 'render status:: non autorizzato 'dovrebbe essere' render nulla: true, stato: 401' – IS04
@ IS04 Sì, va a mostrare perché nei miei percorsi ho risorse: sessioni (invece di risorse ** s * *). Ho anche provato a rendere nulla e ottenere lo stesso risultato (per quanto riguarda lo stato, il corpo della risposta era vuoto). –
Sto avendo lo stesso problema con ActionController :: Metal - eventuali approfondimenti che hai scoperto su di esso? – Michael