【发布时间】:2016-01-27 20:10:08
【问题描述】:
我正在使用 PhoenixFramework 和库 Poison。
目前我正在开发一个 REST API。现在我需要以两种不同的方式对模型Book 进行编码。
- 在仅包含基本信息的所有书籍列表中 (
GET /books) - 包含所有信息的详细视图 (
GET /book/1)
GET /books
{
"books": [
{
"id": 1,
"name": "Book one"
},
{
"id": 2,
"name": "Book two"
},
// ...
]
}
GET /books/1
{
"book": {
"id": 1,
"name": "Book one",
"description": "This is book one.",
"author": "Max Mustermann",
// ...
}
}
Book的编码器
defimpl Poison.Encoder, for: MyProject.Book do
@attributes [:id, :name, :description, :author]
def encode(project, _options) do
project
|> Map.take(@attributes)
|> Poison.encode!
end
end
片段控制器
def index(conn, _params) do
books = Repo.all(Book)
json(conn, %{books: books})
end
如何限制字段?我搜索类似:only 或:exclude 的选项。
有人遇到过这个问题吗?
感谢您的帮助!
【问题讨论】:
标签: json elixir phoenix-framework