ЗАПРОС / ОТВЕТЫ REST API .СЕТЕВОЕ ЯДРО

#c# #rest #asp.net-core

#c# #rest #asp.net-core

Вопрос:

На стороне клиента: клиент отправляет POST-запрос в веб-API REST с использованием HTTPCLIENT на URL "Http://localhost:44344/api/sale" -адрес с телом JSON:

 {
    "CashierID":"002",
    "AdditionalInfo":
    [
    {
     "amount":"11",
     "sessionID":"2",
    }
    ]
}
  

На стороне сервера:

После получения запроса сервер немедленно возвращает результат с идентификатором для идентификации операции, пересылает запрос на другой сервер и ожидает ответа . Всякий раз, когда результат доступен, сервер повторно отправляет ответ с результатом и идентификатором тому же клиенту.

 {
"Result": {
        
        "ErrorCode": "",
        "OperationID": 1,
        "Status": null,
        "responseCode": null
    }
}
  

Как я знаю в .NET Core, метод может возвращать только один ответ, я провожу некоторые поиски, я обнаружил, что система очередей может это сделать, но только при выполнении нескольких запросов, а не ответов.
как я могу реализовать такой подход к ответу?
Спасибо

Комментарии:

1. Вы не можете сделать это с помощью HTTP, это противоречило бы модели связи HTTP. Если сервер отправляет ответ, этот запрос / ответ завершен, вам нужен новый. Не похоже, что HTTP — это то, что вам нужно для этого — подсказка, связь между сервером и клиентом обычно осуществляется с помощью таких технологий, как websockets.

2. Это просто невозможно с HTTP. Вы не можете отправить несколько ответов на один и тот же запрос. Варианты: 1) дождитесь ответа 2-го сервера, прежде чем предоставлять ответ от вашего API. 2) Используйте websockets вместо HTTP, чтобы обеспечить поток обновлений в реальном времени, инициируемых клиентом или сервером. (в мире .NET это обычно делается с помощью SignalR, кстати.) 3) Найдите какой-нибудь другой асинхронный способ уведомить пользователя, когда ответ возвращается с другого сервера (например, электронная почта, SMS, push-уведомление).

3. @CamiloTerevinto спасибо за ваш ответ, как насчет того, чтобы клиент сделал запрос на опрос и получил второй ответ? проблема в том, как сохранить ответ перед запуском объединения, я подумал и об этом решении, но я не знаю, как я могу это сделать

4. @ADyson спасибо, 1) получение ответа занимает много времени, потому что мне нужен такой подход. 2) мне нужно использовать связь rest. 3) как что?

5. @ADyson я согласен с вами, я должен объяснить им, что это не очень хорошее решение, и я постараюсь найти хорошее решение. я знаю, что у опроса также есть свои недостатки, поэтому мне нужно найти другое решение. в любом случае спасибо