Cancel
Showing results for 
Search instead for 
Did you mean: 

如何选择一个正确的URL来访问部署在MindSphere上的app接口。

Experimenter
Experimenter

      如MindSphere中文文档上所给出的: https://developer.mindsphere.io/zh/concepts/concept-gateway-url-schemas.html. 具体可以再进行参考. 

请求需要经过MindSphere的网关来进行下一步分发, 所以选择一个正确的访问才能访问到MindSphere上部署的app的接口.

 

目前MindSphere提供四种访问的方式:

 

     1. 调用 MindSphere Web 应用:

       MindSphere 中托管的 Web 应用可以在以下主机名下的网关处提供:

       {tenantName}-{webApp}[-{provider}].{region}[-{env}].{mindsphere-domain}/[{path}]

  • {tenantName} 表示访问 Web 应用的租户。它有助于将用户定向到该租户可用的 IdP,同时允许在浏览器中创建特定于租户的书签。描述
  • {webapp}[-{provider}] 对 Web 应用进行了唯一标识。MindSphere 核心 Web 应用省略了提供者部分,而其它 Web 应用需要包含此部分以避免名称冲突,并保持核心命名空间的整洁。
  • {region}[-{env}] 表示请求发送的数据中心区域。env 部分用于标识环境(例如 preview),仅附加在预览环境中。
  • {mindsphere-domain} 表示请求发送的数据中心域
  • [{path}] 为可选路径参数,用于访问 Web 应用的子内容。第一个路径参数不能与 /api 相同,以避免与 API 路由冲突。

        此方案可针对部署在同一个tenant下面的注册为同一个应用里面的不同的components之间相互调用, 因为其除[{path}]之外的route都是相同的.

        例: 当前有一个app(https://mytenant.myapp-mytenant.cn1.mindsphere-in.cn), 其中包含两个components, 其中一个app为"a", 包含一个endpoint为"/a/myapi/**", 另外一个为"b", 包含一个endpoint为"/b/myapi/**". 此时a要去访问b, 那么这个时候即可在代码里面直接书写"/b/myapi/test"就可访问到. 也可以写上完整路径访问: https://mytenant.myapp-mytenant.cn1.mindsphere-in.cn/b/myapi/test.

 

      2. Web 应用客户端调用 MindSphere API

       Web 应用客户端在用于检索该客户端的相同主机名下调用 MindSphere API。URL 路径参数确定了调用目标。

  • {webAppHost}即为1.中的https://mytenant.myapp-mytenant.cn1.mindsphere-in.cn这一部分
  • {apiName}[-{apiProvider}] 对 API 进行了唯一标识。核心 API 省略了 apiProvider 部分以简化 URL。非核心 API 需要附加 API 的提供者名称,以避免名称冲突并保持核心命名空间的整洁。
  • v {major} 表示 API 的主要版本。
  • {endpoint} 表示 API 的端点,可以使用嵌套路径。

          这种方式适合于部署在MindSphere上的不同app之间相互调用. app “a1”去访问app "a2"的接口. 

          例如: a1访问a2的“/a2/myapi/test”接口, 那么此时在a1的代码里面可这样书写:

                    "/api/a2-myProvider/v1/a2/myapi/test", 这里的myProvider需要替换成a2所在的tenant的名字.

 

       3. 活动客户端调用 MindSphere API

         活动客户端应该在 Web 浏览器之外运行。它们不需要主机名中的租户或 Web 应用标识符。但是,确定目标 API 的方法与调用 Web 应用客户端的方法相同.

         gateway.{region}[-{env}].{mindsphere-domain}/api/{apiName}[-{apiProvider}]/v{major}/{endpoint}.

         例如微信上某一个程序需要调用MindSphere上面部署的"app"这个应用的接口"/app/myapi/test". 那么此时可在微信端的程序里书写如下URL:

         https://mytenant.myapp-mytenant.cn1.mindsphere-in.cn/api/myapp-mytenant/v1/app/myapi/test.

 

        4. 设备代理调用 MindSphere 代理或边缘 API

         设备代理以与通用北向客户端相同的方式调用 MindSphere,但使用不同的子域名.

         southgate.{region}[-{env}].{mindsphere-domain}/api/{apiName}[-{apiProvider}]/v{major}/{endpoint}

         该URL具体介绍可查看MindSphere官网: https://developer.mindsphere.io/zh/concepts/concept-gateway-url-schemas.html.