关于 API 请求字段的部分响应,大家有什么经验或实践吗?

2021 年 5 月 11 日
 billly

例如: User(id, name, phone, email)

而请求时,只需要 id,name,phone

现在是让客户端传递 field 字段实现,但感觉不太好

3948 次点击
所在节点    程序员
24 条回复
justseemore
2021 年 5 月 11 日
😂 这个不是接口返回直接约定的么。
iplayio2019
2021 年 5 月 11 日
让客户端传递 field 还真有这么实现的
billly
2021 年 5 月 11 日
@zpfhbyx 约定了 后面会变的啊
billly
2021 年 5 月 11 日
@iplayio2019 自己也感觉不太好 但也没想到更优雅的方式
miokowsw
2021 年 5 月 11 日
试一下 GraphQL
ChoateYao
2021 年 5 月 11 日
就是让客户端请求 field 和 expect 来确定要哪些字段和剔除哪些字段
justseemore
2021 年 5 月 11 日
@billly 。。变改就行了啊。。
ch2
2021 年 5 月 11 日
GraphQL 是标准的解法
no1xsyzy
2021 年 5 月 11 日
你全传过去,不需要的部分客户端抛弃不行吗(
xuanbg
2021 年 5 月 11 日
GraphQL 的够了啊! 9 楼才是正解。后端全给,前端要不要用随意。一般后端设计数据结构的时候是根据原型来的,给过去的字段前端不用很少见。
CamD
2021 年 5 月 12 日
graphql
tonyaiken
2021 年 5 月 12 日
fields, projection 都行
renmu123
2021 年 5 月 12 日
都给就完事了,前端要啥自己拼去
kaneg
2021 年 5 月 12 日
OData 有规范支持。用户可以先获取 metadata 来拿到字段定义,之后就可以有选择性返回指定的自动
IvanLi127
2021 年 5 月 12 日
我之前做都是通过传递一个用途的字段来控制返回的字段。比如下拉就是 forDropdown=true 。现在我用 GraphQL 。
KingOfUSA
2021 年 5 月 12 日
如果是 java 系的话,可以试试这个库 https://github.com/ksprider/Surgical
KingOfUSA
2021 年 5 月 12 日
@GetMapping("/demo0")
@JSON("no,name,age,zoo(name,address,city(id,name))")
只会返回 no 、name 、age 以及 zoo 对象里面的 name 、address,以及 zoo 下面的 city 里面的 id 、name


@GetMapping("/demo1")
@JSON("no,name,zoo(name)")
只会返回 no 、name 以及 zoo 对象里面的 name


@GetMapping("/demo2")
@JSON("no,name")
只会返回 no 、name
ganning
2021 年 5 月 12 日
fastjson 里好像有个过滤器,可以看一下
lanten
2021 年 5 月 12 日
你们那么多用 GraphQL 的大佬,我想问一句,字符串模板里面怎么整合 TS 类型?
buffzty
2021 年 5 月 12 日
我的做法是 前端传 scene ,后端根据 scene 返回不同的数据结构. 跟 graphQL 类似.
对 ts 友好.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/776260

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX