Как вернуть ответ Json от сервисного уровня (Dot net core 3.1)

У меня есть вопрос. У меня есть приложение dotnet core 3.1. У меня есть контроллер назначений, который вызывает служба назначения. Встреча вызывает службу проверки для проверки некоторых значений в базе данных de. Я хочу остановить выполнение, если значение не существует в базе данных. Я хочу вернуть список ответов клиенту от службы проверки.

Как я могу вернуть ответ от службы проверки?

пример кода:

public async Task<bool> Validate() { 
bool ValidateOK = await 
_validateService.ValidateObjects(ObjectsToValidate); 
if (ValidateOK == false) //Throw list of Errors en messages return true; 
}
Responses wil be like this
{
   Errorcode: 201
   ErrorMessage: Value1 doesn't exists in the database
}
{
   Errorcode: 201
   ErrorMessage: Value2 doesn't exists in the database
}

Вы пытаетесь вернуть json на фронтенд или это необходимо в вашем коде? Не могли бы вы также показать какой-нибудь код, который подчеркивает, что вы пробовали, или каково состояние этих функций.

rbdeenk 17.05.2022 07:52

Пытаюсь вернуться на фронт. Код довольно стандартный. Служба проверки проверяет некоторое значение в базе данных, и если оно не существует, она должна вернуть ответ и остановить выполнение. Исправление: я хочу передать список ошибок и сообщений во внешний интерфейс, если значения не существуют.

user3552264 17.05.2022 07:54

public async Task<bool> Validate() { bool ValidateOK = await _validateService.ValidateObjects(ObjectsToValidate); if (ValidateOK == false) //Вывести список сообщений об ошибках return true; }

user3552264 17.05.2022 08:00

Не могли бы вы отредактировать свой вопрос вместо публикации в комментариях, вы можете использовать уценку, чтобы сделать его блоком кода. я отвечу на твой вопрос

rbdeenk 17.05.2022 08:05

Спасибо. Я отредактировал вопрос. Я надеюсь, что я сделал это правильно.

user3552264 17.05.2022 08:08

вы можете выбрать часть кода и нажать ctrl + k, чтобы пометить ее как блок кода

rbdeenk 17.05.2022 08:13

надеюсь теперь все в порядке

user3552264 17.05.2022 08:21

Выглядит хорошо для меня, в настоящее время работаю над подробным ответом

rbdeenk 17.05.2022 08:23

Давайте продолжить обсуждение в чате.

rbdeenk 17.05.2022 08:35
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
2
9
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы вернуть ответ Json, вы должны изменить возвращаемое значение Type функции/метода, используемого в качестве конечной точки. Это первая функция, которая вызывается внешним интерфейсом.

В этом случае я бы рекомендовал создать собственный класс. Это упростит реализацию более конкретной обработки ответа. И сделает его более доступным для разных частей вашего приложения.

Класс будет выглядеть так (вы можете манипулировать им в соответствии с вашими потребностями):

public class Response
{
    public int StatusCode { get; set; }
    public string Message { get; set; }
}

Ваша функция Validate должна выглядеть так:

public async Task<Response> Validate(type objectToValidate)
{
    // validation process
    if (!validated) return response;
}

Не забудьте установить Type в параметрах все, что вам нужно проверить. Ваша функция Validate не отвечает за общение с внешним интерфейсом. Так что вы бы не хотели, чтобы он возвращал Json.

Ваш Endpoint будет выглядеть так:

public async Task<JsonResult> MyEndpoint()
{
    // your code
    var response = await _validateService.Validate(objectToValidate);
    return Json(response);
}

Возможно, вам понадобится ссылка Microsoft.AspNetCore.Mvc.

Спасибо за быстрый ответ. Я постараюсь реализовать это и дам вам знать, если это работает. Еще раз большое спасибо.

user3552264 17.05.2022 08:40

Удалось ли вам реализовать этот код? Дайте мне знать, если вам нужна дополнительная помощь любого рода.

rbdeenk 17.05.2022 10:29

привет rbdeenk, еще раз спасибо за ваш ответ. Это действительно помогло мне. Еще один вопрос, который у меня есть: могу ли я прервать выполнение в службе проверки де-валидации, чтобы перечислить ошибки в ответе и не возвращаться к вызывающей службе/контроллеру? Причина этого вопроса заключается в том, что служба проверки является общей службой, которая используется для разных контроллеров/служб.

user3552264 17.05.2022 10:49

Важно понимать, что ваша служба проверки — не более чем проверка. Он не должен обрабатывать работу контроллеров, контроллеры несут ответственность за обработку запросов от и к внешнему интерфейсу. Таким образом, вам придется реализовать возврат для каждого вызова контроллера, который использует проверку.

rbdeenk 17.05.2022 10:55

Любое время! (Ген проблема :))

rbdeenk 17.05.2022 11:55

Другие вопросы по теме