gpt4 book ai didi

elixir - Phoenix - 具有多个渲染的 Controller

转载 作者:行者123 更新时间:2023-12-03 09:06:00 24 4
gpt4 key购买 nike

尝试使用 Elixir + Phoenix 创建一个应用程序,该应用程序将能够处理“浏览器”和“api”请求以处理其资源。

是否可以在不必做类似的事情的情况下做到这一点:

scope "/", App do
pipe_through :browser

resources "/users", UserController
end

scope "/api", App.API as: :api do
pipe_through :api

resources "/users", UserController
end

这意味着必须创建两个 Controller ,它们可能具有相同的行为,除了它将使用浏览器管道呈现 HTML,例如 JSON,用于 api 管道。

我在想也许像 Rails respond_to do |format| ...

最佳答案

正如 Gazler 所说,拥有单独的管道可能会为您提供最好的服务,但是可以通过对相同 Controller 操作的模式匹配来愉快地完成这样的事情:

def show(conn, %{"format" => "html"} = params) do
# ...
end

def show(conn, %{"format" => "json"} = params) do
# ...
end

或者如果函数体是相同的,并且您只想根据接受 header 呈现模板,您可以这样做:
def show(conn, params) do
# ...

render conn, :show
end

传递一个原子作为模板名称将导致 phoenix 检查接受 header 并呈现 .json.html模板。

关于elixir - Phoenix - 具有多个渲染的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30624403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com