Ho già un controller API Rails che restituisce la risposta JSON. Viene utilizzato dal Javascript front-end (così come dall'app mobile) per il rendering dei valori.Come chiamare l'API interna dalla vista Rails (per lo scopo del prerender di ReactJS)?
Ora, desidero pre-rendering quei valori utilizzando ReactJS:
#app/controllers/api/v1/products_controller.rb
module API
module V1
class ProductsController < ApplicationController
def index
@products = Product.all #this could be acomplex multi-line statements.
#rendered in api/v1/products/index.json.jbuilder
end
end
end
end
#app/controllers/products_controller.rb
class ProductsController < ApplicationController
def index
#How to do this efficiently?
@products_json = #Call to internal /api/v1/products/index for prerender purpose.
@user_json = #Call to internal /api/v1/user/show for prerender purpose.
end
end
#app/views/products/index.html.erb
<%= react_component('ProductsList', @products_json, {prerender: true}) %>
<%= react_component('UserProfile', @user_json, {prerender: true}) %>
Come chiamo interno /api/v1/products
e /api/v1/user
URL in modo efficiente (ad esempio senza fare HTTP GET richiesta al mio server)?
Dai un'occhiata a https://github.com/rails-api/active_model_serializers –
Sembra che sarà più "efficiente" se non mischi la vista e il livello API - niente di sbagliato nel fare due API chiama allo stesso server per popolare la tua vista (specialmente se la richiesta non arriva dal client). Le altre soluzioni sono più complesse e meno manutenibili. – pherris