Skip to content

一套配合protoc-gen-hip使用的自动生成前端的网络层交互的协议

License

Notifications You must be signed in to change notification settings

GodWY/proton-gen-hjs

Repository files navigation

protoc-gen-js

简介

读取protobuffer文件,自动生成js api请求。

使用方法

首先来看生成代码

// Code generated by protoc-gen-hjs. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.21.12
import request from '@/utils/request.js'

/**
 * 用户登录
 * @param {Object} data
 * @param {string} data.sns_id 渠道标识+渠道唯一标识 sns_id
 * @param {string} data.app_id 暂无注释,请联系后端开发索要注释。 app_id
 * @return {string} data.jwt_token 暂无注释,请联系后端开发索要注释。 jwt_token
 * @return {number} data.user_id 暂无注释,请联系后端开发索要注释。 user_id
 * @return {string} data.nick 暂无注释,请联系后端开发索要注释。 nick
 * @return {string} data.avatar 暂无注释,请联系后端开发索要注释。 avatar
 */
function login (data) {
    return request({
        url: '/api/demo/userService/v1/login',
        method: 'POST',
        data
    })
}

代码生成包含几个部分

  1. 文档相关

此部分是自动生成的代码,用于在提示客户端使用传递给后段的参数有哪些,来源是proto文件注释

  1. 实际函数

这部分代码是调用方的实际调用,包含url, 方法和数据

定义proto

syntax="proto3";
package user;

option go_package="pkg/gen/http/user";

// LoginReq 登录请求
message LoginReq{
  // @note:渠道标识+渠道唯一标识 
  // @gotags: form:"sns_id" json:"sns_id"
  string sns_id = 1;
  // 微信appid
  // @gotags: form:"app_id" json:"app_id"
  string app_id = 2;
}

// LoginRsp 登录返回
message LoginRsp{
  // jwt_token 授权token
  // @gotags: form:"jwt_token" json:"jwt_token"
  string jwt_token = 1;
  // 用户uid
  // @gotags: form:"user_id" json:"user_id"
  int32 user_id = 2;
  // 用户昵称
  // @gotags: form:"nick" json:"nick"
  string nick = 3;
  // 用户头像
  // @gotags: form:"avatar" json:"avatar"
  string avatar = 4;
}


//@root:/api/demo
service UserService {
  // @method:POST @doc:用户登录
  rpc Login (LoginReq)returns(LoginRsp);
}

服务端定义参考

protoc-gen-hip

使用@note为每一个字段加上注释,@doc定一个每个接口的作用

About

一套配合protoc-gen-hip使用的自动生成前端的网络层交互的协议

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages