必须配置input_schema以严格校验上游参数,否则非法输入将透传导致流程中断;支持启用内置422响应或手动捕获validation_errors自定义提示;嵌套结构需逐级声明并限制层级≤4。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify工作流中配置一个对外暴露的API节点时,必须确保上游传入的参数结构严格符合业务预期,否则下游Python脚本解析失败、数据库写入中断或模型调用报错将直接导致流程中断。
在开始节点配置input_schema
打开工作流编辑器 → 点击「开始节点」→ 在右侧属性面板找到「输入参数配置」→ 展开「高级设置」→ 找到「Input Schema(JSON Schema)」输入框。
粘贴标准JSON Schema定义,例如:
{ "type": "object", "properties": { "user_id": { "type": "string", "format": "uuid" }, "amount": { "type": "number", "minimum": 0.01, "multipleOf": 0.01 } }, "required": ["user_id", "amount"] }
这一步必须完成,【未填写input_schema的开始节点默认不校验任何参数,所有非法输入都会透传至后续节点】。
校验失败时返回清晰错误信息
方法一:启用Dify内置错误响应
在开始节点的「高级设置」中,勾选「启用参数校验失败自动响应」。此时若传入{"user_id":"abc"},系统将直接返回HTTP 422状态码,并附带JSON体:
{"detail":[{"loc":["body","user_id"],"msg":"invalid uuid format","type":"value_error.uuid"}]}
方法二:手动捕获并自定义响应
不勾选自动响应 → 将开始节点输出直接连入Python节点 → 在Python脚本中读取context.get("validation_errors")字段(Dify自动注入)→ 根据errors内容构造业务友好提示。注意:此方式需自行处理HTTP状态码逻辑,且【validation_errors仅在input_schema存在且校验失败时才注入,不存在schema则该字段为空】。
嵌套对象与数组的精准约束
第一步:定义多层嵌套结构
在input_schema中使用properties逐级声明,例如用户订单含多个商品项:
{ "type": "object", "properties": { "order_id": {"type": "string"}, "items": { "type": "array", "minItems": 1, "maxItems": 50, "items": { "type": "object", "properties": { "sku": {"type": "string", "minLength": 5}, "count": {"type": "integer", "minimum": 1} }, "required": ["sku", "count"] } } }, "required": ["order_id", "items"] }
第二步:验证数组元素类型一致性
items数组内每个对象都必须包含sku和count,且count只能是整数。如果传入{"items": [{"sku": "A123", "count": 2.5}]},校验会失败,因为2.5不是integer类型。
第三步:避免过度嵌套导致可读性崩溃
嵌套层级建议不超过4层。超过时应拆分为多个独立节点,用中间变量分段校验,否则调试时无法快速定位哪一层字段出错。


















