2

看来我成功配置了我的approuter:

应用路由器

我在 SCP Cockpit 中为我的服务指定了一个目的地:

SCP Cockpit 中的目标配置

我在 xs-app.json 中维护了目的地:

    {
  "welcomeFile": "/webapp/index.html",
  "authenticationMethod": "route",
  "logout": {
    "logoutEndpoint": "/do/logout"
  },
  "routes": [
    {
      "source": "/destination",
      "target": "/",
      "destination": "service-destination"
    }
  ]
}

我现在的问题是如何通过 approuter 访问我的服务目的地?

不应该是这样的吗: https ://qfrrz1oj5pilzrw8zations-approuter.cfapps.eu10.hana.ondemand.com/webapp/index.html/destination

通过 Approuter 访问服务

...它返回未找到。

知道我在这里做错了什么吗?

这是我的 mta.yaml(如果相关):

    ID: oDataAuthorizations
_schema-version: '2.1'
version: 0.0.1
modules:
  - name: oDataAuthorizations-db
    type: hdb
    path: db
    parameters:
      memory: 256M
      disk-quota: 256M
    requires:
      - name: oDataAuthorizations-hdi-container
  - name: oDataAuthorizations-srv
    type: java
    path: srv
    parameters:
      memory: 1024M
    provides:
      - name: srv_api
        properties:
          url: '${default-url}'
    requires:
      - name: oDataAuthorizations-hdi-container
        properties:
          JBP_CONFIG_RESOURCE_CONFIGURATION: '[tomcat/webapps/ROOT/META-INF/context.xml: {"service_name_for_DefaultDB" : "~{hdi-container-name}"}]'
      - name: xsuaa-auto
  - name: approuter
    type: html5
    path: approuter
    parameters:
      disk-quota: 256M
      memory: 256M
    build-parameters:
      builder: grunt
    requires:
      - name: dest_oDataAuthorizations
      - name: srv_api
        group: destinations
        properties:
          name: service-destination
          url: '~{url}'
          forwardAuthToken: true
      - name: xsuaa-auto



resources:
  - name: oDataAuthorizations-hdi-container
    type: com.sap.xs.hdi-container
    properties:
      hdi-container-name: '${service-name}'
  - name: xsuaa-auto
    type: org.cloudfoundry.managed-service
    parameters:
      path: ./cds-security.json
      service-plan: application
      service: xsuaa
      config:
        xsappname: xsuaa-auto
        tenant-mode: dedicated
  - name: dest_oDataAuthorizations
    parameters:
      service-plan: lite
      service: destination
    type: org.cloudfoundry.managed-service
4

1 回答 1

0

您有两个主机:

  • 路由器
  • 伺服器

问题:

  • https://approuter/destination/将代理到https://srv/

    注意 URL 中的根路径。您会看到应用路由器忽略了目的地的路径段。相反,它会查找您的文件的routes[0].target声明。xs-app.json

症状:

解决方案:

调整您xs-app.json以正确引用目标端点路径:

  "routes": [
    {
      "source": "/destination",
      "target": "/odata/v2",
      "destination": "service-destination"
    }

跟进

由于您的srv应用程序静态引用指向绝对路径的链接/odata/v2,因此您要么必须更新srv中的每个链接以使用相对路径,要么"/odata/v2/"其用作 approuter 路由source来镜像目标。对于后一种情况,您会错过"/destination"路径。

于 2019-05-08T14:32:28.553 回答