2.1 KiB
2.1 KiB
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.TRUE经getAdditionalInfoMap()直接输出为 JSON boolean,违反 BrAPI schema(additionalInfo值须为 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响应可正常解析为 JSON;additionalInfo.dummyData为字符串;无@context: null;cross1 等种子数据字段完整。
状态:已完成