当用REST方式建模时,我们使用分层模式。我们使用分层模式。
我将建立我的 User
源于 /users
和用户的个人资料在 /users/:id/profile
此外,用户必须使用令牌进行认证才能访问其个人资料。在这里,JWT.
所以,我也可以这样建模 /user
和 user/profile
.
我有这个困惑很久了,但同时有一种直觉,第一种更好。
我应该从params还是从JWT token中传递和获取id?
另一个选择是在 uri(usersselfprofile)中使用 "self"。我通常创建一个api,从params(user{id}profile)中获取id,然后为那些不想发送id的客户端写一个中间件,并为他们从JWT token中读取userid。
我放了一些代码来更好地解释我的意思.例如我们有这样的api。
[HttpGet("users/{userId}/profile")]
public IHttpActionResult GetProfile(long userId)
{
}
我们可以像这样调用api: users1profile
然后我有这个中间件。
public class SelfRequestMiddleware
{
public void Invoke()
{
// input : /users/self/profile
// output : /users/1/profile
if(Uri.Split('/').Contains("self"))
Uri.Replace("self",UserId); // Get User Id From Token
}
}
现在,我们可以用两个uri调用这个api。
users1profile
用户自我介绍
而这取决于客户端如何调用api。