Я пытаюсь создать приложение Phoenix сгенерированный html, а также ответы json api. Это то, что я сделал до сих пор:Phoenix json возвращает только идентификаторы
mix phoenix.gen.html User users name:string email:string
mix phoenix.gen.json Api.User users --no-model
Тогда я изменил псевдоним в UserController от «псевдоним MyApp.Api.User» до «псевдоним Api.User». И это работает! .. хорошо почти все!
Это то, что я получаю в ответ HTTP:
{"data":[{"id":1},{"id":2}]}
Проблема Я пытаюсь исправить это - когда я называю GET на Апи, я просто получить список идентификаторов; все другие полезные поля не возвращаются. IO.inspect говорит мне, что контроллер возвращает все. Таким образом, это должно быть представление, которое фильтрует поля.
Однако мое понимание Эликсира/Феникса здесь не подходит. Это то, что я вижу:
def render("index.json", %{users: users}) do
%{data: render_many(users, MyApp.Api.UserView, "user.json")}
end
Мой основной вопрос - Как я могу нырять в методе render_many и выяснить, что происходит, чтобы исправить это?
Мои вторичные вопросы:
- Есть ли хороший ресурс, чтобы получить HTML и JSON API, работая вместе в Финиксе?
- Что такое "user.json" в коде выше? Что касается «index.json», я думаю, что он используется только для сопоставления шаблонов.
В этом случае контроллер должен знать является ли запрошенный ресурс html или json, который может быть прочитан из объекта соединения. Другая проблема - контроллеры html и json api по-разному. Контроллер json api добавляет код состояния для ответа, тогда как контроллер html этого не делает. – Puneet
код статуса не имеет большого значения для запросов, ожидающих html. @ user246615 – prM