3-1 你们的项目是如何进行参数校验的
总流程为网关拦截请求,解析token,把用户信息放入请求头,对应微服务从请求头获取用户信息。
天机学堂是基于JWT实现登录的,获取当前登录用户,解析其中的token即可。
每个微服务都可能需要登录用户信息,因此把token解析的行为放到了网关中,然后由网关把用户信息放入请求头,传递给下游微服务
每个微服务要从请求头拿出用户信息,所以定义了一个HandlerInterceptor,拦截进入微服务的请求,并获取用户信息,存入UserContext
具体代码:tj-auth-resource-sdk服务/UserInfoInterceptor ,需要获取用户信息的服务都依赖了 tj-auth-resource-sdk 服务
3-2 详细说一下你们的问答系统用到了几张表,表中的主要字段有哪些,表关系是什么
两张表,问题表和回复表。
问题表存储问题的基础信息,主要字段是所属的课程,提问学员等。
回复表(既包含回答,又包含评论),回答表有4个主要字段,分别是主键id、目标问题id、目标回答id、目标评论id。区分回答还是评论的根本在于该条回复记录是否有回答id,没有回答id的是回答,有回答id的是评论。
问题表和回复表的关系是一对多,一条问题可以对应多条回答。
回复表自己对自己有一个自查询的关系。
3-3 你们为什么用Mongo, 而不用MySQL存储问题和评论
Mongo适合存储数据量大,相对价值不高的数据,为了减少MySQL数据库的压力,推荐采用Mongo存储问题和评论