我的应用程序为其用户保留了多个配置文件属性,例如:
等。每个属性对用户都是唯一的;它们都可以用作身份信息。
我正在设计一个API,其操作涉及特定用户,例如 charge 。 我想允许客户端通过任何可用的配置文件属性识别用户。在我的特定域中,不可能只强制客户端使用内部userId,即使他们可以在单独的调用中接收它(例如 getUserIdFromProfileAttribute )。
假设 charge 操作,它是一个POST请求,在主体内部有一个JSON文档。识别用户的最佳方法是什么?我在考虑以下其中一项:
id和id类型的顶级键/值对:
{
"userId": <id>,
"userIdType": <idType>
}
用户密钥内的嵌套键/值对:
{
"user": {
"id": <id>,
"type": <idType>
}
}
单键/值对,使用带有(可能)自定义协议的URI格式:
{
"user": <uri> # eg id:1234, tel:+19283912000, email:user@mail.com
}
单个键/值对,每个id使用不同的键(每个调用一个键):
{
"userId": <id> *OR*
"userMsisdn": <msisdn> *OR*
"userEmail": <email>
}
与上述相同,但嵌套在用户密钥中:
{
"user": {
"id": <id> *OR*
"msisdn": <msisdn>
}
}
有关最佳做法的建议吗?任何人都可以指出一些具有类似需求的标准/广泛使用的API?
我应该重申,在所有调用中仅使用内部userId是不可能的,并且对每个id使用单独的调用(例如 chargeById , chargeByEmail )是不切实际的因为有很多这样的电话。