Pathom3中Resolver的:provides与:output配置区别解析
Pathom3 Resolver里
:provides和:output的区别 根本定位不同
:output:是输出字段的极简声明,用向量直接列字段名,作用就是告诉Pathom「这个Resolver能生成哪些顶层字段」,属于基础款的输出定义。:provides:是精细化的输出描述,用键值对(map)形式,除了声明字段,还能给每个字段加元数据(比如类型、描述、关联实体),支持复杂的Schema需求。
用法对比
拿你给出的Resolver配置举例:
#com.wsscode.pathom3.connect.operation.Resolver {:config #:com.wsscode.pathom3.connect.operation {:input [:ip] :provides {:longitude {} :latitude {}} :output [:longitude :latitude] :op-name com.wsscode.pathom3.demos.ip-weather/ip->lat-long}, :resolve ...}
:output用向量直接列出longitude和latitude,写法简单直接。:provides这里用了空map占位,要是需要给字段加额外信息,直接在map里填就行,比如::provides {:longitude {:type :float :desc "IP对应的经度"} :latitude {:type :float :desc "IP对应的纬度"}}
适用场景
- 只需要告诉Pathom输出哪些字段?用
:output就够,省事。 - 要给字段加元数据、定义嵌套输出结构,或者做Schema相关的扩展?必须用
:provides。
内部关联
Pathom会自动处理两者的关系:如果只写了:output,它会自动转成对应的:provides结构(每个字段对应空map);如果同时写了两者,:provides的优先级更高,会覆盖:output的声明。
内容的提问来源于stack exchange,提问作者MouseNag
相关产品推荐
相关产品推荐

