Как хранить и называть веб-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 варианта:
сохранить его по URL + использовать
HttpClient
, или же- Pro: Откат транзакции обрабатывается платформой ABP при возникновении исключения.
- Против: Вам необходимо обработать веб-запрос, авторизацию и десериализацию ответа.
сохранить его с помощью AppService и имен методов + использовать отражение.
- Pro: Авторизация обрабатывается платформой ABP, когда в
IAbpSession.Use()
блок. - Против: Возможно, вам придется обрабатывать транзакции и исключения ⇒ логическая утечка к вызывающей стороне.
- Pro: Авторизация обрабатывается платформой ABP, когда в
Для полноты картины этот вопрос является первым из серии других вопросов о переполнении стека:
- Этот вопрос. (23 октября)
- Как вызвать Web API (Служба приложений) удаленно (31 октября) - вариант 1
- Как вызвать веб-API под определенным пользователем разрешением? (31 октября) - вариант 1, переключиться на вариант 2
- Как использовать отражение для вызова API по имени строки? (3 ноября) - вариант 2
Почему вы не используете аудит?
Вы можете легко отслеживать все взаимодействия приложений (даже вызовы вашего сервиса) в таблице AbpAuditLogs, используя