当前位置: 首页 > news >正文

Dify中自定义工具类的类型

在dify的自定义工具类中定义了如下的json schema格式:

{"openapi": "3.1.0","info": {"title": "电网项目数据查询接口","description": "提供电网项目相关信息查询功能,支持按多种条件筛选","version": "v1.0.0"},"servers": [{"url": "***"}],"paths": {"***": {"post": {"description": "查询电网项目信息","operationId": "GetProjectInfo","parameters": [{"name": "PROJECTNAME","in": "query","description": "项目名称(示例:110kV梁营至高桥110kV线路单线开断环入安澜变工程(架空),类型:text)","required": false,"schema": {"type": "string"}},{"name": "PROJECTTYPE","in": "query","description": "项目类型(单项工程/输变电工程,类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "TYPE","in": "query","description": "工程类型(示例:架空线路工程/110千伏工程/间隔扩建 /间隔改造/架空-电缆部分/变电站新建      类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "VOLTAGE","in": "query","description": "电压等级(取值:110kV/35kV/220kV/500kV  类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "MANAGER_UNIT","in": "query","description": "管理部门(示例:苏州、南京,类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "DESIGN_UNIT","in": "query","description": "设计单位(示例:南京中儒电力设计有限公司,类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "REVIEW_UNIT","in": "query","description": "评审单位(示例:省经研院规划评审中心,类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "CONTACT_MAN","in": "query","description": "联系人(示例:潘芸13862109602,类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "ITEMPHASE","in": "query","description": "项目阶段(取值:初设/可研 类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "REVIEWBACK","in": "query","description": "评审退回状态(示例:退回,类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "FLOW_STATE","in": "query","description": "流转状态(取值:资料上报/收口资料上传/评审结束/正式评审记录上传/收口资料审核/收口审核/计划专责计划审核/预审意见填写/正式评审/评审通过    类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "TURN_STATE","in": "query","description": "流转状态(取值:未结束流转/已结束流转 类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "FORMAL_STATE","in": "query","description": "正式评审状态(取值:未结束/已结束/已结束评审  类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "ITEM_STATE","in": "query","description": "项目状态(取值:通过/未申报/未提交/退回完善/不通过   类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "INNER_STATE","in": "query","description": "匹配计划内项目状态(取值:已匹配/未匹配  类型:varchar)","required": false,"schema": {"type": "string"}},{"name": "PLAN_START_TIME","in": "query","description": "计划开始时间范围(示例:[\"2020-01-01\",\"2023-09-30\"],类型:varchar,格式:时间范围)","required": false,"schema": {"type": "string"}},{"name": "REVIEW_TIME","in": "query","description": "评审时间范围(示例:[\"2018-01-03\",\"2024-09-02\"],类型:varchar,格式:时间范围)","required": false,"schema": {"type": "string"}},{"name": "PLAN_REVIEW_TIME","in": "query","description": "计划评审时间范围(示例:[\"2018-01-03\",\"2024-09-02\"],类型:varchar,格式:时间范围)","required": false,"schema": {"type": "string"}},{"name": "ESTIMATE_STATE","in": "query","description": "文件评审阶段(示例:送审,类型:varchar,注释:文件评审阶段)","required": false,"schema": {"type": "string"}}],"deprecated": false}}},"components": {"schemas": {}}
}

由于刚刚接触后端的报错如下:

2025-08-03T09:14:57.351+08:00  WARN 3049334 --- [0.0-8089-exec-6] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public org.springframework.http.ResponseEntity<com.project.filter.dto.FilterResponse> com.project.filter.controller.FilterTestCtroller.filterData(java.util.Map<java.lang.String, java.lang.Object>)]

大致的错误说的就是:在我的 Spring Boot 应用中,客户端发送的请求缺少了必要的请求体(request body),具体来说就是在FilterTestCtroller控制器中的filterData方法期望接收一个Map<String, Object>类型的请求体,但客户端在发送请求时没有提供这个请求体,导致 Spring 无法解析请求内容,从而抛出HttpMessageNotReadableException异常。

修改如下后即可正常测试:

{"openapi": "3.1.0","info": {"title": "电网项目数据查询接口","description": "提供电网项目相关信息查询功能,支持按多种条件筛选","version": "v1.0.0"},"servers": [{"url": "***"}],"paths": {"***": {"post": {"description": "查询电网项目信息","operationId": "GetProjectInfo","requestBody": {"required": false,"content": {"application/json": {"schema": {"type": "object","properties": {"PROJECTNAME": {"type": "string","description": "项目名称(示例:110kV梁营至高桥110kV线路单线开断环入安澜变工程(架空),类型:text)"},"PROJECTTYPE": {"type": "string","description": "项目类型(单项工程/输变电工程,类型:varchar)"},"TYPE": {"type": "string","description": "工程类型(示例:架空线路工程/110千伏工程/间隔扩建 /间隔改造/架空-电缆部分/变电站新建      类型:varchar)"},"VOLTAGE": {"type": "string","description": "电压等级(取值:110kV/35kV/220kV/500kV  类型:varchar)"},"MANAGER_UNIT": {"type": "string","description": "管理部门(示例:苏州、南京,类型:varchar)"},"DESIGN_UNIT": {"type": "string","description": "设计单位(示例:南京中儒电力设计有限公司,类型:varchar)"},"REVIEW_UNIT": {"type": "string","description": "评审单位(示例:省经研院规划评审中心,类型:varchar)"},"CONTACT_MAN": {"type": "string","description": "联系人(示例:潘芸13862109602,类型:varchar)"},"ITEMPHASE": {"type": "string","description": "项目阶段(取值:初设/可研 类型:varchar)"},"REVIEWBACK": {"type": "string","description": "评审退回状态(示例:退回,类型:varchar)"},"FLOW_STATE": {"type": "string","description": "流转状态(取值:资料上报/收口资料上传/评审结束/正式评审记录上传/收口资料审核/收口审核/计划专责计划审核/预审意见填写/正式评审/评审通过    类型:varchar)"},"TURN_STATE": {"type": "string","description": "流转状态(取值:未结束流转/已结束流转 类型:varchar)"},"FORMAL_STATE": {"type": "string","description": "正式评审状态(取值:未结束/已结束/已结束评审  类型:varchar)"},"ITEM_STATE": {"type": "string","description": "项目状态(取值:通过/未申报/未提交/退回完善/不通过   类型:varchar)"},"INNER_STATE": {"type": "string","description": "匹配计划内项目状态(取值:已匹配/未匹配  类型:varchar)"},"PLAN_START_TIME": {"type": "string","description": "计划开始时间范围(示例:[\"2020-01-01\",\"2023-09-30\"],类型:varchar,格式:时间范围)"},"REVIEW_TIME": {"type": "string","description": "评审时间范围(示例:[\"2018-01-03\",\"2024-09-02\"],类型:varchar,格式:时间范围)"},"PLAN_REVIEW_TIME": {"type": "string","description": "计划评审时间范围(示例:[\"2018-01-03\",\"2024-09-02\"],类型:varchar,格式:时间范围)"},"ESTIMATE_STATE": {"type": "string","description": "文件评审阶段(示例:送审,类型:varchar,注释:文件评审阶段)"}}}}}},"deprecated": false}}},"components": {"schemas": {}}
}

问题说明:

       修改后的 OpenAPI 规范与之前的版本相比,核心区别在于参数传递方式的变更。

1. 参数位置的根本变化

  • 原版本:所有参数定义在parameters数组中,且in: "query",表示参数通过URL 查询字符串传递(即拼接在 URL 末尾,格式如?PROJECTNAME=xxx&VOLTAGE=110kV)。

  • 修改后:移除了parameters数组,所有参数迁移至requestBody中,通过请求体(JSON 格式) 传递(参数包含在 HTTP 请求的 body 中,而非 URL)。

2.结构上的具体差异

  • 对比项原版本修改后版本
    参数容器使用parameters数组定义每个参数使用requestBody.content.application/json.schema.properties定义参数
    参数传递载体URL 查询字符串请求体(JSON 格式)
    前端请求格式POST /api/filter/search?PROJECTNAME=xxxPOST /api/filter/search,body 为{"PROJECTNAME":"xxx"}
    与后端的兼容性需后端用@RequestParam接收参数需后端用@RequestBody接收参数
http://www.xdnf.cn/news/1236439.html

相关文章:

  • 服务器中切换盘的操作指南
  • 更换KR100门禁读头&主机
  • Redis+Lua的分布式限流器
  • 专网内网IP攻击应急与防御方案
  • 专网内网IP攻击防御:从应急响应到架构加固
  • 一个网页的加载过程详解
  • 2025年EAAI SCI1区TOP,森林救援调度与路径规划:一种新型蚁群优化算法应用,深度解析+性能实测
  • MVCC:数据库事务隔离的 “时空魔法”
  • 著作权登记遇难题:创作者如何突破确权困境?
  • Rust:开发 DLL 动态链接库时如何处理 C 字符串
  • GaussDB SQL执行计划详解
  • Flutter各大主流状态管理框架技术选型分析及具体使用步骤
  • RAG-Semantic Chunking
  • 一加Ace5无法连接ColorOS助手解决(安卓设备ADB模式无法连接)
  • 迈向透明人工智能: 可解释性大语言模型研究综述
  • JavaScript 性能优化实战指南:从运行时到用户体验的全面提升​
  • LangGraph认知篇-Persistence 持久化
  • 嵌入式学习日志——数据结构(一)
  • Supergateway教程
  • 使用DrissionPage实现xhs笔记自动翻页并爬取笔记视频、图片
  • Day22--回溯--77. 组合,216. 组合总和 III,17. 电话号码的字母组合
  • Kafka 是什么?
  • 《汇编语言:基于X86处理器》第11章 MS-Windows编程(3)
  • 【stm32】按键控制LED以及光敏传感器控制蜂鸣器
  • OSPF知识点整理
  • 实战《从0开始使用SwiftUI搭建记账软件》- 2、SwiftUI 知识点详解与使用场景
  • 6.1、Redis多级缓存原理和优化、Redis部分参数优化调整
  • 【超分辨率专题】PiSA-SR:单步Diff超分新突破,即快又好,还能在线调参
  • Linux 摄像头实时抓取:V4L2、FFmpeg 与 GStreamer 全面讲解
  • python工具方法51 视频数据的扩充(翻转、resize、crop、re_fps)