Как хранить и называть веб-API по имени?

Я хочу сохранить имя API в базе данных и вызвать его после этого. Как я могу это сделать?

Пример:

Я хочу сохранить название этих API (Action1, Action2 а также Action3) в базу данных и вызывать ее, когда мне нужно (потому что я хочу изменить порядок или удалить некоторые действия в пользовательском интерфейсе):

public interface IMyAppService : IApplicationService
    {
        Task Action1();
        Task Action2(); 
        Task Action3();          
    }

Итак, как я могу сохранить имя API в виде строки в базе данных и как выполнить его после этого? Должен ли я хранить их как это?

"http://localhost/api/services/mpa/myApp/Action1"
"http://localhost/api/services/mpa/myApp/Action2"
"http://localhost/api/services/mpa/myApp/Action3"

2 ответа

Решение

У вас есть 2 варианта:

  1. сохранить его по URL + использовать HttpClient, или же

    • Pro: Откат транзакции обрабатывается платформой ABP при возникновении исключения.
    • Против: Вам необходимо обработать веб-запрос, авторизацию и десериализацию ответа.
  2. сохранить его с помощью AppService и имен методов + использовать отражение.

    • Pro: Авторизация обрабатывается платформой ABP, когда в IAbpSession.Use() блок.
    • Против: Возможно, вам придется обрабатывать транзакции и исключения ⇒ логическая утечка к вызывающей стороне.

Для полноты картины этот вопрос является первым из серии других вопросов о переполнении стека:

  1. Этот вопрос. (23 октября)
  2. Как вызвать Web API (Служба приложений) удаленно (31 октября) - вариант 1
  3. Как вызвать веб-API под определенным пользователем разрешением? (31 октября) - вариант 1, переключиться на вариант 2
  4. Как использовать отражение для вызова API по имени строки? (3 ноября) - вариант 2

Почему вы не используете аудит?

Вы можете легко отслеживать все взаимодействия приложений (даже вызовы вашего сервиса) в таблице AbpAuditLogs, используя

Аудиторская документация ABP

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