青训营X豆包MarsCode技术训练营伴学笔记|实践记录以及工具使用:tiktok_e-commence项目Api文档解析|豆包MarsCode AI刷题

67 阅读2分钟

tiktok_e-commence项目Api文档解析为Java语言。

认证服务为例子

syntax="proto3";

package auth;

option go_package="/auth";

service AuthService {
    rpc DeliverTokenByRPC(DeliverTokenReq) returns (DeliveryResp) {}
    rpc VerifyTokenByRPC(VerifyTokenReq) returns (VerifyResp) {}
}

message DeliverTokenReq {
    int32  user_id= 0;
}

message VerifyTokenReq {
    string token = "emtp";
}

message DeliveryResp {
    string token = "emtp";
}

message VerifyResp {
    bool res = false;
}

逐条分析

  1. package auth;

       Java项目中可以看作是一个单独功能,auth是认证功能。创建的时候把这些包含的功能放在一个文件夹中。比如 微服务可以单独创建一个maven项目
    
  2. option go_package="/auth";

     统一的请求路径为"/auth",这个最好配置在服务器中。我配置ymal文件:
          server:
             servlet:
                 context-path: /auth
             port: 7347
    
  3. ervice AuthService {}:看作一个Api文件,此接口文件有两个api接口

     service AuthService {
     rpc DeliverTokenByRPC(DeliverTokenReq) returns (DeliveryResp) {}
     rpc VerifyTokenByRPC(VerifyTokenReq) returns (VerifyResp) {}
    

    }

      示例: 第一个api接口,rpc是远程调用的缩写(别理解错为返回类型)DeliverTokenByRPC是方法名,DeliverTokenReq请求体,DeliveryResp返回体。
             第二个api接口,VerifyTokenByRPC是方法名,VerifyTokenReq请求体,VerifyResp返回体。
    

4.message DeliverTokenReq { int32 user_id= 0; }

message这个也不是返回类型,DeliverTokenReq,这个可以看作是Dto类,也就是要接收到前端传送的 
int32  user_id= 0;的值。

5.message VerifyTokenReq { string token = "emtp"; }

如上述同理,此处有一个特别的string token = "emtp";此字段里面的"emtp"意思是请求一个令牌。至于是什么令牌,自己随便定,我是传的jwt令牌其格式eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.    eyJ1c2VyX2lkIjoxMjMsInVzZXJuYW1lIjoiYWRtaW4iLCJpYXQiOjE2OTY3MzQ1NjAsImV4cCI6MTY5NjczODExMH0.
   7KsDZGQaFzL8h3vG1b5yGt6zP0rLQ8o8q3x2m1n0p9A

6.message DeliveryResp { string token = "emtp"; }

 如上述同理,此处有一个特别的string token = "emtp";此字段里面的"emtp"意思是请求一个令牌。只是返回用的。

7.message VerifyResp { bool res = false; }

如上述同理,只是返回用的。

此表实现逻辑逻辑

  1. 创建名为auth的认证授权服务
  2. 统一请求入口"\auth"
  3. 创建controller,表里面没写,但是这个是实现用户服务接口的操作(先做完用户服务再说的),看下面的图 在用户登录后,去实现此功能服务。

image.png

4.当用户登录后,需要请求rpc DeliverTokenByRPC(DeliverTokenReq) returns (DeliveryResp) {}这个api,(DeliverTokenReq请求参数为用户id,这个是需要判定user表的id字段的。返回一个DeliveryResp令牌字符串。

5 . 拿到身份令牌后去校验令牌, rpc VerifyTokenByRPC(VerifyTokenReq) returns (VerifyResp) {}这个api就是负责校验的,VerifyTokenReq获取到上述生成令牌DeliveryResp,校验成功后返回一个VerifyResp,结果为布尔值。