如何用Phoenix框架渲染json?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用Phoenix框架渲染json?相关的知识,希望对你有一定的参考价值。
如果使用带有ajax请求的Rails框架,这种方式在控制器中可以将数据发送回前端:
def get_posts
@posts = Post.where(user_id: params[:user_id].to_i)
if request.xhr?
render :json => {
:posts => @posts
}
end
end
前端可以抓住它:
$.ajax({
type: "GET",
url: "<%= get_post_path %>",
data: {user_id: $("#user_id").val()},
success: function(data, textStatus, xhr) {
alert(data.posts);
//...
}
然后在Phoenix框架中,如何将数据发送回前端?
我从官方文档中看到了这个指南:
它的方法是使用render("page.json", %{page: page})
发送数据,但我不想创建一个json文件。
那么有可能像Rails那样将数据发送回前端吗?
有可能的。你有很多步骤...首先,你的路由器需要管道请求,所以它接受json。像这样的东西:
pipeline :api do
plug :accepts, ["json"]
end
scope "/api", TodoWithAuthWeb do
pipe_through :api
resources "/posts", PostController, except: [:new, :edit]
end
然后你的控制器动作应该呈现.json视图
render(conn, "show.json", post: post)
而这个show.json
视图将是类似的
def render("show.json", %{post: post}) do
%{data: render_one(post, PostView, "post.json")}
end
def render("post.json", %{post: post}) do
%{id: post.id,
title: post.title}
end
或类似的东西。您可以使用phx工具为您生成整个资源...例如,生成用户/控制器/视图/等
mix phx.gen.json Authentication User users email:string encrypted_password:string
其中Authentication
是“包”的名称
User
是您在代码库中的型号名称
users
是db上的集合名称
其他args类似于轨道发生器我猜
网上有一些指南,如Building a Trello copy with Phoenix and React
你也可以在github上查看我的简单todo-list凤凰回购,这样你就可以看到基础知识TodoApp example(它非常沉闷的tho)
以上是关于如何用Phoenix框架渲染json?的主要内容,如果未能解决你的问题,请参考以下文章
java web二进制流的图片如何用response返回给前台
如何用 ViewPager 中的另一个片段替换 Android 片段?
如何用python+selenium+phantomjs获得一个网页的动态生成的html代码