{
"id": 1,
"name": "foo"
}
使用Phoenix生成器,响应如下:
{
"data":
{
"id": 1,
"name": "foo"
}
}
我发现POST有类似问题,我需要发布{"company": { "name": "foo" } }
而不是{ "name": "foo" }
。
我有两个问题:
答案 0 :(得分:1)
我认为这取决于个人偏好。
你当然可以改变它。
在生成的视图中,从
更改它def render("show.json", %{id: id, name: name}) do
%{
data: %{
id: id,
name: name
}
}
end
到
def render("show.json", %{id: id, name: name}) do
%{
id: id,
name: name
}
end
在你的控制器函数中接受JSON:
def create(conn, %{"company" => %{"name" => name}}) do
...
end
到
def create(conn, %{"name" => name}) do
...
end
您生成的函数可能看起来不同,但我认为您明白了这一点。
答案 1 :(得分:1)
发布Phoenix 1.3.0的差异生成代码,以便它可以帮助其他人:
控制器更改
- def create(conn, %{"company" => company_params}) do
+ def create(conn, company_params) do
- def update(conn, %{"id" => id, "company" => company_params}) do
- company = Repo.get!(Company, id)
+ def update(conn, company_params) do
+ company = Repo.get!(Company, conn.path_params["id"])
查看更改
def render("index.json", %{companies: companies}) do
- %{data: render_many(companies, ConstructApi.CompanyView, "company.json")}
+ render_many(companies, ConstructApi.CompanyView, "company.json")
end
def render("show.json", %{company: company}) do
- %{data: render_one(company, ConstructApi.CompanyView, "company.json")}
+ render_one(company, ConstructApi.CompanyView, "company.json")
end