带有Web服务的PASOE Business Class Entity中具有令牌的自定义标头?

问题描述 投票:1回答:1

我有一个PASOE业务类实体设置作为Web服务。我正在尝试确定如何创建一个允许我传入散列令牌的自定义标头。这是我需要升级到11.7.4 DOH(OpenEdge.Web.DataObject.DataObjectHandler)的东西吗?或者这是我只是添加到类中定义的方法的东西?抱歉,因为缺乏说明我情况的代码,但我不知道从哪里开始。

openedge progress-4gl
1个回答
2
投票

如果您正在使用Web传输的业务实体,那么您正在使用DOH,以下适用。如果您正在使用休息运输,那么您不使用DOH,并且您的选择更受限制。

https://documentation.progress.com/output/oe117sp/index.html#page/gssp4/openedge-data-object-handler.html的DOH上有文档 - 它是11.7.4,但主要适用于所有版本(即11.6.3+)。这描述了JSON映射文件,您需要创建一个覆盖默认生成的映射文件。

如果要对所有操作使用标题值,则可能需要使用DOH事件之一。在https://github.com/PeterJudge-PSC/http_samples/blob/master/web_handler/data_object_handler/DOHEventHandler.cls有一个事件处理程序的例子;您将需要使用new DOHEventHandler()在会话启动过程中启动该处理程序(编写代码的方式是它使自己成为单例)。

您现在可以为运行业务逻辑之前触发的Invoking事件添加处理代码。

如果要将标头值传递到业务逻辑中,则需要执行此操作

  • 将生成的映射文件<service>.gen复制到同一文件夹中的<service.map>。 “gen”文件生成并将被工具覆盖
  • 在.map文件中,添加一个新的arg条目。这必须与BE方法的参数顺序相同。
  • JSON应该如下所示。这将读取标头的值并将其作为输入参数传递给方法。
    { "ablName": "<parameter_name>",
      "ablType": "CHARACTER",
      "ioMode": "INPUT",
      "msgElem": {"type": "HEADER", "name": "<http-header-name>"}
    }
© www.soinside.com 2019 - 2024. All rights reserved.