C'è un modo per fare in modo che Phoenix.Controller.json(conn, data)
emetta un bel JSON?Fai in modo che il controller Phoenix emetta un bel JSON
risposta
Phoenix.Controller.json/2
attualmente non accetta opzioni che potrebbero essere passate al codificatore JSON.
Se si desidera rendere globalmente tutte le chiamate json
piuttosto JSON, è possibile creare un wrapper attorno a Poison
e indicare a Phoenix di utilizzarlo.
In lib/my_app/pretty_poison_encoder_for_phoenix.ex
, aggiungere:
defmodule MyApp.PrettyPoisonEncoderForPhoenix do
def encode_to_iodata!(data) do
Poison.encode_to_iodata!(data, pretty: true)
end
end
E in config/config.exs
, aggiungere:
config :phoenix, :format_encoders, json: MyApp.PrettyPoisonEncoderForPhoenix
Dopo aver riavviato il server, tutte le chiamate json
dovrebbero stampare automaticamente abbastanza JSON.
Se si desidera un output piuttosto buono in dev
, è possibile invece aggiungere il codice sopra riportato in config/dev.exs
. Se lo fai, prod
continuerà a produrre JSON non grazioso.
È possibile anche creare un semplice wrapper che fa quello Phoenix.Controller.json/2
fa (quasi; vedi nota sotto), ma rende anche l'uscita abbastanza:
def pretty_json(conn, data) do
conn
|> put_resp_header("content-type", "application/json; charset=utf-8")
|> send_resp(200, Poison.encode!(data, pretty: true))
end
Usage:
def index(conn, _params) do
pretty_json conn, [%{a: 1, b: 2}, %{c: 3, d: 4}]
end
uscita :
➜ curl localhost:4000
[
{
"b": 2,
"a": 1
},
{
"d": 4,
"c": 3
}
]
Nota: questo non è esattamente equivalente a Phoenix.Controller.json/2
poiché tale funzione aggiunge solo il tipo di contenuto se uno non è presente. È possibile utilizzare la stessa logica copiando un codice da here.
- 1. Controller Phoenix orribilmente ridondante
- 2. Fai in modo che il C++ chiami il metodo giusto per il modello in modo sgradevole
- 3. In che modo le monadi possono semplificare il mio lavoro? Mostrami un bel pezzo di codice
- 4. current_user controller Phoenix approvata dal Plug
- 5. Come fare in modo che l'avvio a molla non emetta mai un cookie di sessione?
- 6. C'è un modo per far sì che NHibernate emetta un suggerimento deadlock?
- 7. C'è un modo per far sì che g ++ emetta solo avvisi relativi ai miei file?
- 8. Fai in modo che Visual Studio ignori le eccezioni?
- 9. Utilizzare la visualizzazione personalizzata con più controller in Phoenix
- 10. In che modo Apple rende i controller contenenti altri controller?
- 11. Fai in modo che PowerShell pensi che un oggetto non sia enumerabile
- 12. In che modo FXMLLoader carica il controller FXML?
- 13. ritorno JSON da un controller MVC che si estende Apicontroller
- 14. Bel modo per aggiungere un vettore a sé
- 15. Devo usare Ecto.Repo in Controller o Model per Elixir Phoenix?
- 16. NodeJS attendi che la richiamata finisca su evento emetta
- 17. CSS: fai in modo che un elemento di blocco riempia l'intero spazio di un elemento genitore?
- 18. come rispondere a un bel json usando il framework di gioco?
- 19. Bel modo di forzare riempimento utente varargs parametro in Java
- 20. Phoenix Ecto come gestire NoResultsError
- 21. Render relazione molti a molti JSON a Phoenix quadro
- 22. Come eseguire il rendering di un file JSON con il framework Phoenix?
- 23. Come posso far sì che XStream emetta in modo graduale le liste Scala? Posso scrivere un convertitore personalizzato?
- 24. Fai in modo che Google Maps mantenga lo zoom e il centro dopo l'aggiornamento?
- 25. Primavera RequestMapping per i controller che producono e consumano JSON
- 26. Come trasmettere un messaggio da un controller Phoenix a un canale?
- 27. Come testare unitamente un controller JSON?
- 28. Fai in modo che Espresso attenda che WebView finisca di caricarsi
- 29. Restituisce un array JSON da un controller in Symfony
- 30. Come aggiungere un plug in Elixir/Phoenix prima del router?