JSONAPI 实现
Posted
技术标签:
【中文标题】JSONAPI 实现【英文标题】:JSONAPI implementation 【发布时间】:2020-06-06 11:19:20 【问题描述】:我一直在研究以找出实现标准 JSONAPI (https://jsonapi.org) 的方法,但我没有找到真实的来源或令人信服的实现方法。
为了在实际示例中表示这一点,我们有以下响应
"data":
"type": "articles",
"id": "1",
"attributes":
// ... this article's attributes
,
"relationships":
// ... this article's relationships
所以我们预期的实体是文章,也可能是作者。这些实体存储在数据库(SQL 或 NoSQL)中,并且可以使用任何工具来查询数据(Mongoose、Knex、typeorm..etc)
从数据库返回的预期结果是(从文章中选择第一个)
"name":"article1",
"id":"1"
问题是处理来自 DB 的响应并将其转换为 JSONAPI 标准的最佳位置在哪里?是模型层吗?控制器?查看或添加表示层?
我一直在考虑一种通过使用模板引擎(pug、Handlebars..etc)来实现这一点的方法,但这是个好主意吗?因为模板引擎目标是 html 而不是 JSON?
如果使用模板引擎呈现 JSON 是个好主意,是否有任何可用的 JSON 模板引擎来生成 JSON?
可以查看任何建议或指南或编写良好的示例吗?
谢谢。
【问题讨论】:
我想不出你为什么想要一个模板引擎。应该只是JSON.stringify()
。
【参考方案1】:
我是在我的 NestJS 应用程序的控制器中使用jsonapi-serializer 完成的。我为 JSON API 序列化创建了一个服务。对我来说,这似乎是最好的关注点分离。控制器从服务中获取数据,然后调用序列化服务,然后将响应传回给调用者。
【讨论】:
以上是关于JSONAPI 实现的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Java / Spring MVC 返回基于 jsonapi.org ID 的格式?