关于在 Developer Cockpit 中配置 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
注意事项:
/api
开头。因为这会与平台内部处理逻辑造成冲突。例如:/api/user/user1
, /api/check
, /api/**
这样的配置是错误的;但是 /test/api
, /test/api/user1
, /abc/api/**
这样的 Endpoint 是没有问题的,因为没有以 /api
开头。/
或者 /**
。即使 App 包含多个 Component,这些所有的 Component 中至少得有一个 /
或者 /**
。当一个 Component 配置了一个 Endpoint 过后,很多情况下会出现如下的错误:
对于包含 UI 的 App( 含 css, js 之类的), 当在访问应用时,会显示 css, js 文件“找不到的 404 错误”。这个时候多数是在 Developer Cockpit 中的 Endpoint 配置不当造成的。
/
与 /**
/
。在注册 App 后访问 App 时,只能默认访问到 index.html。但是其它文件夹中的 js, css 这些都会报 404 错误(index.html 中 <script> 标签引用的也是如此)。因为一个 /
默认只会匹配到 index.html 或者 index.jsp 这种资源。/
改为 /**
。这样不管 css, fonts 文件夹下有多少级目录,里面的资源文件都是可以被正常找到并加载的。/test
、/test/user
、/test/user/getinfo
)
/test/**
/test/user
和 /test/user/getinfo
。Endpoint 需要配置:/test/user/**
,或者添加两个 Endpoint:/test/user
和 /test/user/getinfo
/test/user
。此时有几种配置方法可以使前端 UI 和后端暴露的路径被正常地访问。
/**
。因为这会把后端的所有请求所拦截,不管后端的 Endpoint 如何配置。/js/**
/css/**
/fonts/**
/element-ui/**
/
。最后一个 /
是为了找到 index.html。这些 Endpoint 顺序可以不固定。/**
。这里配置不会出现问题,不会出现访问前端资源的请求被后端所拦截,因为 Component 顺序是前端 UI 先配置,所以所有的请求都会先被前端 UI 所配置的 Endpoint 匹配到,也就不存在请求被后端 Component 所拦截。/test/**
或者 /test/user
/**
,因为这会拦截有来自前端的请求,不管前端 UI Component 的 Endpoint 如何配置。/test/**
或者 /test/uesr
/**
/js/**
/css/**
/fonts/**
/element-ui/**
/
或者 /*
或者 /**
。最后一个不固定,对于 index.html 这几种方式都可以被匹配到。Endpoint 的配置遵循 Spring 的 AntPathMatcher 匹配原则。参考文章:http://www.blogjava.net/supercrsky/articles/293728.html。