如何根据客户端调用使用许多数据库实现Web API

法布里蒂奥·罗德里格斯(Fabricio Rodriguez)

我必须为系统创建一个RESTful Web API(我使用的是ASP.NET Core 1.1),就每个使用此系统的客户端都有自己的数据库而言,这可能有点不寻常。(客户就像一家公司,其中有很多用户)。因此,有一个主数据库,它为每个客户端指定其必须连接到的数据库。所有客户端数据库都是相同的(当然数据除外)。

我想知道应该如何处理...通常,当应用程序使用Web API时,您可能会遇到以下情况:

public class AccountsController : Controller
{
    private readonly SomeContext _context;

    public FilesController(SomeContext context)
    {
        _context = context;
    }

    // GET: api/Files
    [HttpGet)]
    public IEnumerable<Account> GetAccounts()
    {
            return _context.Accounts;
    }
}

现在,在上述示例中,问题在于上下文必须指向不同的数据库,具体取决于哪个客户端正在请求帐户列表。我不确定如何最好地解决这个问题。如果前端通过每个API调用在查询字符串中发送客户端标识符,可以吗?因此,每个控制器操作都将具有一个ClientId参数。并且基于该参数,该操作会在调用它之前动态修改Context的连接字符串?但是,从实现和安全角度来看,这听起来都非常糟糕。问题是,据我所知,ASP.NET是无状态的,因此每次调用API时,API都不知道这是谁?

或者我还能怎么做?

法布里蒂奥·罗德里格斯(Fabricio Rodriguez)

我将从访问令牌中识别用户(并因此识别她希望使用的数据库)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel API连接到客户端数据库

使用Python API客户端从PostgreSQL数据库更新Zendesk票证

如何在 WEB API 中使用 SignalR 2,从 API 和客户端调用 SignalR 方法

从Web API调用客户端

如何使用Google Cloud客户端库进行基于API密钥的REST调用

如何使用Postman客户端调用Twitter API

通过与客户端(MVC)一起使用Web API中的操作,通过远程验证来验证数据库中是否存在电子邮件?

使用OkHttp3的Odoo v9 Web Service API的Apache XML RPC客户端库等效调用

Docker:数据库、客户端和 API 之间的分离级别

REST API-客户端会话状态与数据库会话状态

如何防止客户端REST API调用阻止/使用Jersey优先处理某些API调用

使用 Vertx 实现客户端分页 API 调用的最佳方法是什么?

无法安装Web API客户端库

验证服务帐户以使用JavaScript客户端库调用Google API

如何使用asp net core http客户端将文件和文本数据发布到web api?

如何从ASP.NET Core的客户端调用Web api方法?

如何将客户端Javascript数组和通过Node.js API POST到MongoDB数据库中?

如何解决Sqlite.swift中的警告消息“ libsqlite3.dylib的客户端错误:数据库违反API的完整性”?

使用Python客户端库进行gcp计算API使用什么以及如何传递凭据

如何使用Jersey客户端API在RESTful调用上添加标题

如何使用授权和客户端ID在C#中调用Azure Maps API?

如何使用 OAuth 2.0 客户端 ID 调用 Google Drive API?

如何在客户端机器上访问 Web API

如何使用swagger从wp rest api生成Retrofit客户端库

如何使用客户端库将格式传递给Google Cloud Translation API?

如何使用Java的Google Translate v2 API客户端库提出翻译请求?

如何使用Java的Google API客户端库检索youtube缩略图

谷歌应用引擎灵活 - 如何使用客户端库或 REST API 启动现有版本

在REST API中将数据库ID公开给客户端是否是一种不好的做法?