当为一个业务流程创建一个端点时,你必须指定将在这个请求中发送的数据类型(Request payload type )。最常见的选项是JSON ;它允许你方便地指定所有必要的参数,并传递一个数据模型或一个对象阵列。此外,其他选项也是可能的,例如,XML 或Multipart Form (如果你需要发送文件)。
同时,如果事先不知道确切的结构(或者根本不重要),也可以接受这种情况。在这种情况下,一个合理的选择是使用 "raw" 查询。
raw 请求的业务流程
想象一下可能需要这样做的情况。比方说,我们正在开发的服务只是一个连接环节。它的任务是接收来自用户的请求,检查授权,保存日志,执行垃圾邮件保护,并在一切正常的情况下进一步重定向该请求。
Raw 查询的一个重要特点是,在设计业务流程时不使用输入参数。相反,一个特殊的块被用来获取请求体 - Get Request Body.假设你对请求的扩展信息感兴趣。在这种情况下,这个 Current Request Info块是一个合适的选择--它不仅返回请求正文,而且还返回额外的参数和请求头信息。
如果我们对请求中的某个特定头信息感兴趣,可以使用 Get Request Header块获得。上面的例子读取了 X-Real-IP头,它包含了请求的IP地址。得到的IP被传递给一个函数,该函数必须检查给定的IP是否有效,是否在被禁地址的黑名单上。因此,该过程将被中止,并出现适当的错误信息,或者,如果一切正常,将允许继续执行。
收到的请求为Raw ,被表示为一个字节数组。为了便于理解,它可以被转换为一个字符串(To String块);以这种形式,信息被存储在日志中。
在这种情况下,请求本身,不需要任何转换,可以进一步使用 HTTP Request块。在这个例子中,请求方法、其URL和请求正文(从 Current Request Info块中获得)被指定。块的结果被用作 HTTP Request块的结果被用作整个业务流程的结果。
屏幕截图显示了最终的业务流程。请注意,功能块 (FUNC Save request Log 和FUNC IP Blacklist Check) 是例子,只存在于这个项目的范围内。
因此,端点可以用来处理任何请求,无论其实际内容如何。你不需要知道应该发送给第三方服务的确切请求,即使其中有一些变化(增加一个模型,重命名参数),你也可以继续使用这个端点,而不需要对项目进行修改。