实习日志03

发布于 9 天前  19 次阅读


CMDB的任务做了一些之后,开始做ITSM相关的任务了。
写了有关ITSM中具体任务的一两个小脚本,其中一个脚本涉及到前后端交互和连接以及穿透的范畴。“穿透”这个词听着感觉有点玄乎,但是其实可以用一句话解释,“穿透”就是把用户在前端输入框里打下的字,毫无保留地“传”给后端接口去查库。不穿透的话,不管用户在其前端想查什么,都只会返回最新的数据,而不是根据用户搜索的关键词查询指定的数据。逻辑就是,允许前端传入额外的参数-->获取参数-->转发给api

代码实现就是:

  • 开启“额外字段允许”模式(pydantic是一个用于数据验证的库,如果不写这行配置,Pydantic 的严格模式会认为这是非法数据。)
model_config = ConfigDict(extra="allow")
  • 取参数(前提:当在 ITSM 前端配置一个“下拉框”组件,并开启“远程搜索”功能时,ITSM 前端组件内部写死了这样的逻辑:“只要用户在输入框打字,我就把输入的内容存到一个固定的变量里,这个名字就叫 remote_search)
remote_search = getattr(input_obj, "remote_search", None)
  • 传给API

1. 标准的 Web 开发流程

在普通的 Web 开发中(比如用 Vue 写前端,用 Python Django/Flask 写后端):

  1. 前端:发起请求。
    • Axios.get('/api/tickets?keyword=打印机')
  2. 后端:接收请求,处理业务。
    • request.args 里拿到 keyword
    • 去数据库查询 like %打印机%
    • 把结果整理成 JSON。
  3. 前端:拿到 JSON,渲染页面。

2. ITSM 脚本开发

在 ITSM 这种低代码平台中,为了灵活性,把“后端”拆分了:

  • 平台本身:负责基础的路由、鉴权、前端框架。
  • 你的脚本:负责具体的业务逻辑(也就是上面标准流程中的第 2 步)。

脚本就是一个微型的“后端接口”

  • 输入:前端传来的参数 -> execute(input_data)
  • 处理:跑逻辑 -> run_logic()
  • 输出:返回 JSON -> OutputSchema

3. 区别?

ITSM动作脚本还要定义 Schema,并且参数是系统注入的

因为 ITSM 平台为了通用性,做了一层标准化封装

  • 强类型约束: 普通开发里,后端接口返回什么字段,前端得去看文档才知道。 而在这里,平台强制你先定义 Schemainput_schemaoutput_schema)。这样平台的前端组件才能自动生成输入框、自动渲染列表。这叫 “契约驱动开发”
  • 网关代理: 你的脚本并不是直接暴露给前端的。前端请求先打到 ITSM 的网关,网关解析后,再按照约定调用你的脚本,并把参数(remote_search)注入进去。

A life of freedom is all my ambition
最后更新于 2026-03-20