通过几种可能的身份来引用用户

时间:2014-11-27 20:11:00

标签: api-design

我的应用程序为其用户保留了多个配置文件属性,例如:

  • 内部userId
  • 他们的电话号码
  • 他们的电子邮件

等。每个属性对用户都是唯一的;它们都可以用作身份信息。

我正在设计一个API,其操作涉及特定用户,例如 charge 。 我想允许客户端通过任何可用的配置文件属性识别用户。在我的特定域中,不可能只强制客户端使用内部userId,即使他们可以在单独的调用中接收它(例如 getUserIdFromProfileAttribute )。

假设 charge 操作,它是一个POST请求,在主体内部有一个JSON文档。识别用户的最佳方法是什么?我在考虑以下其中一项:

  1. id和id类型的顶级键/值对:

    {
        "userId": <id>,
        "userIdType": <idType>
    }
    
  2. 用户密钥内的嵌套键/值对:

    {
        "user": {
            "id": <id>,
            "type": <idType>
        }
    }
    
  3. 单键/值对,使用带有(可能)自定义协议的URI格式:

    {
         "user": <uri>      # eg id:1234, tel:+19283912000, email:user@mail.com
    }
    
  4. 单个键/值对,每个id使用不同的键(每个调用一个键):

    {
        "userId": <id>                                 *OR*
        "userMsisdn": <msisdn>                         *OR*
        "userEmail": <email>
    }
    
  5. 与上述相同,但嵌套在用户密钥中:

    {
        "user": {
            "id": <id>                                 *OR*
            "msisdn": <msisdn>
        }
    }
    
  6. 有关最佳做法的建议吗?任何人都可以指出一些具有类似需求的标准/广泛使用的API?

    我应该重申,在所有调用中仅使用内部userId是不可能的,并且对每个id使用单独的调用(例如 chargeById chargeByEmail )是不切实际的因为有很多这样的电话。

0 个答案:

没有答案