Insights Hub 关于在 Developer Cockpit 中配置 Endpoint 的注意事项

2024-03-26T03:27:11.000-0400
Developer Tools Applications

摘要

关于在 Developer Cockpit 中配置 Endpoint 的注意事项


详细信息

一、关于 Endpoint

应用程序(App)的 Endpoint 是用来映射 App 对外暴露的 Restful 路径(/test/**/test/user/test/user/user1 等)。只有在 Developer Cockpit 上配置过的 Endpoint 才能被 Gateway 网关识别,否则这个 Endpoint 将无法被 Gateway 所找到。

Endpoint 的匹配规则参考官方介绍:https://documentation.mindsphere.io/MindSphere/apps/developer-cockpit-for-subscribers-to-mindaccess-plans/add-an-application.html#user-interface

注意事项:

  1. 在配置 Endpoint 时,切记勿以 /api 开头。因为这会与平台内部处理逻辑造成冲突。例如:/api/user/user1, /api/check, /api/** 这样的配置是错误的;但是 /test/api, /test/api/user1, /abc/api/** 这样的 Endpoint 是没有问题的,因为没有以 /api 开头。
  2. Endpoint 至少包含一个 / 或者 /**。即使 App 包含多个 Component,这些所有的 Component 中至少得有一个 / 或者 /**

二、如何配置一个正确的 Endpoint

当一个 Component 配置了一个 Endpoint 过后,很多情况下会出现如下的错误:

对于包含 UI 的 App( 含 css, js 之类的), 当在访问应用时,会显示 css, js 文件“找不到的 404 错误”。这个时候多数是在 Developer Cockpit 中的 Endpoint 配置不当造成的。

  1. //**
    假设在 Developer Cockpit 中配置了一个 Endpoint:/。在注册 App 后访问 App 时,只能默认访问到 index.html。但是其它文件夹中的 js, css 这些都会报 404 错误(index.html 中 <script> 标签引用的也是如此)。因为一个 / 默认只会匹配到 index.html 或者 index.jsp 这种资源。
    所以,如果想让 css, fonts 这样的子目录中的资源也可以正常被访问到,需要将 / 改为 /**。这样不管 css, fonts 文件夹下有多少级目录,里面的资源文件都是可以被正常找到并加载的。
  2. 针对后端 App 暴露的 Restful 接口
    倘若当前 Component 是用于后端对外提供接口服务,且对外暴露了 3 个路径(/test/test/user/test/user/getinfo
    1. 如果需要访问这三个路径。Endpoint 需要配置为:/test/**
    2. 如果需要访问 /test/user/test/user/getinfo。Endpoint 需要配置:/test/user/**,或者添加两个 Endpoint:/test/user/test/user/getinfo
  3. 前、后端 App 部署在一个应用程序中
    针对这种此情况 —— 在 Component 中会配置一个 UI 的 Component,然后再配置一个,或多个后端 Component。
    如果此时有一个 UI 和两个后端 Component,这时就需要考虑配置的顺序了,因为应用的目录结构不一样会导致 UI 和后端应用的请求被错误地匹配:因为资源请求的匹配是根据配置的 Component 先后顺序决定的
    假设在 Developer Cockpit 上注册的 App 同时包含前端和后端(即多个 Component);同时,后端暴露了一个路径:/test/user。此时有几种配置方法可以使前端 UI 和后端暴露的路径被正常地访问。
    1. 配置两个 Component:一个为 UI,一个为后端。
      1. 当前端 UI Component 在后端 Component 前面配置。UI 的 Endpoint 一定不能为 /**。因为这会把后端的所有请求所拦截,不管后端的 Endpoint 如何配置。
        下图所示:

        • 前端 UI 的 Component 需要配置 5 个 Endpoint
          1. /js/**
          2. /css/**
          3. /fonts/**
          4. /element-ui/**
          5. /。最后一个 / 是为了找到 index.html。这些 Endpoint 顺序可以不固定。
        • 后端 Component 可以有两种配置: 
          1. 配置 /**。这里配置不会出现问题,不会出现访问前端资源的请求被后端所拦截,因为 Component 顺序是前端 UI 先配置,所以所有的请求都会先被前端 UI 所配置的 Endpoint 匹配到,也就不存在请求被后端 Component 所拦截。
          2. 配置 /test/** 或者 /test/user
      2. 当后端 Component 在前端 UI Component 之前配置。后端 Component 的 Endpoint 也一定不能为 /**,因为这会拦截有来自前端的请求,不管前端 UI Component 的 Endpoint 如何配置。
        针对下图结构
        • 后端配置一个 Endpoint - /test/** 或者 /test/uesr
        • 前端 UI 配置
          1. 只配置 1 个 Endpoint - /**
          2. 或者 5 个 Endpoint
            1. /js/**
            2. /css/**
            3. /fonts/**
            4. /element-ui/**
            5. / 或者 /* 或者 /**。最后一个不固定,对于 index.html 这几种方式都可以被匹配到。

Endpoint 的配置遵循 Spring 的 AntPathMatcher 匹配原则。参考文章:http://www.blogjava.net/supercrsky/articles/293728.html

知识库文章 ID# KB000130807_ZH_CN

内容

摘要详细信息

关联组件

Developer Cockpit