Go+gRPC-Gateway(V2) 微服务实战,小程序登录鉴权服务(四):自动生成 API TS 类型

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
注册配置 MSE Nacos/ZooKeeper,182元/月
云原生网关 MSE Higress,422元/月
简介: Go+gRPC-Gateway(V2) 微服务实战,小程序登录鉴权服务(四):自动生成 API TS 类型

客户端强类型约束,自动生成 API TS 类型定义



protobufjs

官方文档:protobufjs

安装:


yarn add protobufjs


node_modules/.bin 会多出如下命令:

  • pbjs
  • pbts


根据 auth.proto 生成 API TS 类型定义


PROTO_PATH=../microsvcs/auth/api
PBTS_BIN_DIR=./node_modules/.bin
PBTS_OUT_DIR=./miniprogram/service/proto_gen/auth
mkdir -p $PBTS_OUT_DIR
$PBTS_BIN_DIR/pbjs -t static -w es6 $PROTO_PATH/auth.proto --no-create --no-encode --no-decode --no-verify --no-delimited -o $PBTS_OUT_DIR/auth_pb_tmp.js
echo 'import * as $protobuf from "protobufjs";\n' > $PBTS_OUT_DIR/auth_pb.js
cat $PBTS_OUT_DIR/auth_pb_tmp.js >> $PBTS_OUT_DIR/auth_pb.js
rm $PBTS_OUT_DIR/auth_pb_tmp.js
$PBTS_BIN_DIR/pbts -o $PBTS_OUT_DIR/auth_pb.d.ts $PBTS_OUT_DIR/auth_pb.js


脚本已被放置在 miniprogram/gen_ts.sh,在 miniprogram 目录执行 sh gen_ts.sh 即可生成如下文件:


  • miniprogram/miniprogram/service/proto_gen/auth/auth_pb.js
  • miniprogram/miniprogram/service/proto_gen/auth/auth_pb.d.ts


修改 app.ts


引入:


import { auth } from "./service/proto_gen/auth/auth_pb"


在文件里面做如下改动:


微信图片_20220611160349.png


从上图可以看到有属性提示。这里我们也加入了一个 camelcase-keys 包。它主要用来将属性 key 从网络上传输的 expires_in 转换为 expiresIn


Token 验证



编码实战


具体代码位于:microsvcs/shared/auth/token/token.go


type JWTTokenVerifier struct {
  PublicKey *rsa.PublicKey
}
func (v *JWTTokenVerifier) Verify(token string) (string, error) {
  t, err := jwt.ParseWithClaims(token, &jwt.StandardClaims{}, func(t *jwt.Token) (interface{}, error) {
    return v.PublicKey, nil
  })
  if err != nil {
    return "", fmt.Errorf("cannot parse token: %v", err)
  }
  if !t.Valid {
    return "", fmt.Errorf("token not valid")
  }
  clm, ok := t.Claims.(*jwt.StandardClaims)
  if !ok {
    return "", fmt.Errorf("token claim is not StandardClaims")
  }
  if err := clm.Valid(); err != nil {
    return "", fmt.Errorf("claim not valid: %v", err)
  }
  return clm.Subject, nil
}


相关文章
|
1月前
|
JSON Shell API
免费导航规划API接口详解:调用指南与实战示例
该接口由接口盒子提供,支持根据起点、终点及途经点生成驾车或步行导航路线,可获取详细或简化导航数据。提供GET/POST请求方式,需传入坐标信息及用户认证参数,适用于物流路径优化、步行导航、旅游路线规划等场景。
|
1月前
|
人工智能 API 定位技术
MCP 开发实战:手把手教你封装高德地图与 arXiv API
本教程为 MCP(Model Context Protocol)开发实战第二阶段,带你从零封装第三方 API 为 AI 模型可用工具。通过高德地图地理编码与 arXiv 论文检索两个实例,涵盖项目搭建、工具声明、资源定义、错误处理等核心内容,助你快速上手 MCP 开发并集成至 Claude 使用。
|
1月前
|
缓存 前端开发 API
阿里巴巴国际站关键字搜索 API 实战:从多条件筛选到商品列表高效获客
本文详解了如何通过阿里巴巴国际站的关键字搜索接口实现多条件商品搜索功能,涵盖接口调用、参数设置、分页处理及数据解析,并提供可复用的 Python 实现代码,助力开发者高效构建跨境电商商品搜索系统。
|
1月前
|
机器学习/深度学习 JSON API
2025最新版天猫图片搜索API全解析:从图像识别到商品匹配实战
天猫图片搜索API(拍立淘)基于深度学习与CNN技术,实现以图搜商品,支持图片URL或二进制上传,适用于比价、推荐等场景。2025版新增多模态搜索优化与相似度动态调整。接口支持POST/GET请求,返回商品详情及排序结果,示例代码提供Python请求方式。
|
2月前
|
缓存 安全 测试技术
精选API实战问答,解决开发中的疑难杂症
这是一份精选的 API 开发高频问题与解决方案合集,涵盖基础概念、设计规范、安全认证、调试测试、性能优化等十大主题。每日学习 1-2 个问题,结合实战应用,快速掌握 API 开发核心技能,高效解决开发中的各类疑难杂症,适合开发者构建系统化知识体系。
|
2月前
|
存储 数据采集 监控
电商数据分析实战:利用 API 构建商品价格监控系统
在电商运营中,商品价格直接影响转化率和竞争力。本文介绍如何构建一套自动化价格监控系统,覆盖京东、淘宝双平台,实现数据采集、存储、分析与智能告警,助力企业实时掌握价格动态,优化定价策略。
|
2月前
|
存储 数据采集 API
小红书笔记详情API深度解析与实战指南(2025年最新版)
本文深入解析小红书开放平台笔记详情API的进阶使用与合规策略,涵盖接口升级、数据维度扩展、调用优化等内容,并提供Python调用示例及数据清洗存储方案。结合电商导购、舆情监控等实战场景,助力开发者高效获取并应用内容资产,同时强调数据隐私与平台政策合规要点,帮助构建稳定、安全的数据应用体系。
ts重点学习110-枚举类型的兼容性笔记
ts重点学习110-枚举类型的兼容性笔记
115 0
ts重点学习110-枚举类型的兼容性笔记
ts重点学习134-三斜杠语法笔记
ts重点学习134-三斜杠语法笔记
281 0
ts重点学习138-ts.config.json笔记
ts重点学习138-ts.config.json笔记
347 0