如何按名称存储和调用Web API?

时间:2017-10-23 07:51:37

标签: asp.net-web-api aspnetboilerplate

我想将API的名称保存到数据库中,然后再调用它。我怎么能这样做?

示例:

我想将这些API的名称(Action1Action2Action3)保存到数据库中,并在需要时调用它(因为我想重新排序或删除某些操作在UI中):

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 个答案:

答案 0 :(得分:1)

为什么不使用审核??

您可以使用

轻松跟踪所有应用程序交互(甚至调用您的服务)到AbpAuditLogs表中

ABP Audit Documentation

答案 1 :(得分:1)

您有两个选择:

  1. 通过网址+使用HttpClient

    保存
    • Pro:当抛出异常时,事务回滚由ABP框架处理。
    • Con:您需要处理Web响应的请求,授权和反序列化。
  2. 通过AppService和方法名称保存+使用反射。

    • Pro:授权由IAbpSession.Use()块中的ABP框架处理。
    • Con:您可能需要处理事务和异常⇒逻辑泄漏给调用者。
  3. 为了完整起见,这个问题是一系列其他Stack Overflow问题中的第一个:

    1. 这个问题。 (10月23日)
    2. How to call Web API (App Service) remotely(10月31日) - 选项1
    3. How to call web API under specific user permission?(10月31日) - 选项1,切换到选项2
    4. How to use reflection to call a API by string name?(11月3日) - 选项2