Как получить доступ к пункту назначения сервиса из approuter? - PullRequest
2 голосов
/ 08 мая 2019

Кажется, что я успешно настроил свой approuter:

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

... он возвращается Не найдено.

Есть идеи, что я тут не так делаю?

Это мой мта.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

1 Ответ

0 голосов
/ 08 мая 2019

У вас есть два хоста:

  • approuter
  • srv

Проблема:

  • 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 , чтобы использовать относительнуюpaths, или используйте "/odata/v2/" в качестве маршрута вашего approuter source, чтобы отразить цель.В последнем случае вы бы пропустили путь "/destination".

...