Files
brapi-java/docs/problem_fix/03-fix-doing/07-get-crosses.md

2.1 KiB
Raw Blame History

GET /crosses

来源BrAPI v2.1 校验报告03-fix.md

概要

状态 warning
方法 GET
URL /brapi/v2/crosses
完整 URL http://localhost:8081/brapi/v2/crosses
路径模板 GET /crosses
模块 Crosses
响应时间 18958 ms

校验详情

GET /crosses
Crosses
18958 ms
schema mismatch
schema mismatch
Json matches schema: schemas/v2.1/metadata.json (schema mismatch) — Schema: schemas/v2.1/metadata.json
Server response is not valid JSON.
Json matches schema: schemas/v2.1/Crosses/getCrossesResponse.json (schema mismatch) — Schema: schemas/v2.1/Crosses/getCrossesResponse.json
Server response is not valid JSON.

修复说明

  • 根因
    • additional_info.value 中 Java 序列化的 Boolean.TRUEgetAdditionalInfoMap() 直接输出为 JSON boolean违反 BrAPI schemaadditionalInfo 值须为 string
    • 匿名请求的 metadata 写入 Long.MAX_VALUE 对应的 token 过期 WARNING年份溢出导致 metadata.json 校验失败。
    • 响应体含 "@context": null,严格 schema 校验不接受。
    • GET /crosses 列表查询存在 N+1 懒加载,响应耗时过长(~19s校验器易超时并报告 not valid JSON。
  • 修复
    • BrAPIPrimaryEntity.getAdditionalInfoMap() 使用 String.valueOf() 统一转为字符串(共用修复)。
    • BrAPIController.getStatusMessages() 匿名用户跳过 token WARNING且忽略超出合理范围>2100 年)的过期时间。
    • BrApiJacksonConfig + BrApiJsonResponseAdvice 序列化时省略 null 字段(如 @context)。
    • CrossService.prefetchAssociations() 用 JOIN FETCH 批量预加载 crossingProject、parents、pollinationEvents 等关联,消除 N+1 查询。
    • CrossService.convertFromEntity() 对缺少 : 的 crossAttributes 做安全解析,避免 500 纯文本错误响应。
  • 验证GET /brapi/v2/crosses 响应可正常解析为 JSONadditionalInfo.dummyData 为字符串;无 @context: nullcross1 等种子数据字段完整。

状态:已完成