如何区分Behance无限滚动中相同GraphQL请求的有效请求?
区分Behance GraphQL有效数据请求的方法
1. 分析GraphQL查询内容
有效请求的query字段会包含明确的产品/项目查询操作(比如searchProjects、exploreProjects),同时会列出需要返回的产品字段(如id、title、coverImage、owner等)。无效请求的query通常是获取用户配置、系统状态或其他非产品数据的操作(比如userSettings、featureFlags)。
你可以在浏览器DevTools里对比有效/无效请求的Payload,提取有效query的特征关键词(比如searchProjects),在代码里发起请求前校验,或者在响应后检查返回的data节点是否包含对应操作的结果。
2. 检查响应数据结构
有效请求的响应JSON中,会存在固定的产品数据节点,比如:
{ "data": { "searchProjects": { "results": [/* 产品数据数组 */], "cursor": "下一页游标" } } }
而无效请求的响应会是完全不同的结构(比如返回用户偏好、弹窗配置等)。你可以在代码中解析响应后,判断是否存在目标节点(如data.searchProjects.results)来筛选有效请求。
3. 校验请求变量参数
无限滚动场景下,有效请求的Payload通常携带分页或筛选参数:
- 分页参数:
cursor(下一页游标)、limit(每页数量) - 筛选参数:
query(搜索关键词)、filters(分类、排序条件)
无效请求一般不会携带这些参数,或者参数类型不符。你可以通过检查请求的variables字段是否包含这些特征参数,来提前判断请求是否有效。
4. 对比Payload大小
有效请求的Payload(即data参数内容)通常更长,因为包含了完整的产品字段查询列表;而无效请求的Payload往往简短,只涉及少量非产品数据的查询。可以通过判断data字符串的长度,初步筛选可能的有效请求。
内容的提问来源于stack exchange,提问作者Awais Saeed
相关产品推荐
相关产品推荐

