Почтовый запрос Ocelot не обрабатывается - PullRequest
1 голос
/ 29 мая 2020
• 1000 Сообщение: Не удалось сопоставить конфигурацию ReRoute для восходящего пути: / api / Patient / CreateAppointment, глагол: POST. в ResponderMiddleware обнаружены ошибки. Установка ответа об ошибке для пути запроса: / api / Patient / CreateAppointment, метод запроса: POST

Ниже приведен мой оцелот. json:

{
  "Routes": [
    {
      "DownstreamPathTemplate": "/api/patient/{everything}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "patientservice",
          "Port": 81
        }
      ],
      "UpstreamPathTemplate": "/api/patient/{everything}",
      "UpstreamHttpMethod": [ "GET", "POST" ],
      "UpstreamHost": "*"
    },
    {
      "DownstreamPathTemplate": "/api/actor",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "postgresqldapper",
          "Port": 5001
        }
      ],
      "UpstreamPathTemplate": "/api/actor",
      "UpstreamHttpMethod": [ "GET" ]
    },
    {
      "DownstreamPathTemplate": "/api/product/{everything}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "productservice",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/api/product/{everything}",
      "UpstreamHttpMethod": [ "GET" ]
    },
    {
      "DownstreamPathTemplate": "/api/weatherforecast",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "postgresqldapper",
          "Port": 5001
        }
      ],
      "UpstreamPathTemplate": "/api/weatherforecast",
      "UpstreamHttpMethod": [ "GET" ]
    },
    {
      "DownstreamPathTemplate": "/api/user",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "loginservicedapr",
          "Port": 80
        }
      ],
      "UpstreamPathTemplate": "/api/user",
      "UpstreamHttpMethod": [ "GET" ]
    },
    {
      "DownstreamPathTemplate": "/api/user/{everything}",
      "DownstreamScheme": "http",
      "DownstreamHostAndPorts": [
        {
          "Host": "loginservicedapr",
          "Port": 5001
        }
      ],
      "UpstreamPathTemplate": "/api/user/{id}",
      "UpstreamHttpMethod": [ "GET" ]
    }

  ],
  "GlobalConfiguration": {
    "RequestIdKey": "OcRequestId",
    "AdministrationPath": "/administration"
  }
}

API, для которого я выполняю Запрос POST работает нормально для запроса POST при вызове непосредственно из Swagger или Postman. Swagger image Пожалуйста, дайте мне знать, что мне следует изменить в ocelot. json файл, чтобы можно было отправить запрос POST?

1 Ответ

1 голос
/ 29 мая 2020

Ваша ошибка фактически говорит о том, что Ocelot не может направлять запросы на

POST /api/patient/CreateAppointment

На вашем скриншоте ваша команда curl (которая работает) является запросом на:

POST /api/patient

Ваш суффикс пути /{everything} сообщает Ocelot, что какой бы суффикс вы ни вызывали в шлюз, он будет присутствовать в нисходящей службе.

Моя теория состоит в том, что вы не определили конечную точку CreateAppointment работа с вашим последующим API обслуживания пациентов. После того, как вы определите этот путь в своем сервисе, отображение маршрута /api/patient/{everything} должно работать нормально.

...