Security News
GitHub Removes Malicious Pull Requests Targeting Open Source Repositories
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
@lushijie/thrift-json
Advanced tools
[![npm](https://img.shields.io/npm/v/@lushijie/thrift-json.svg?colorB=brightgreen&style=flat-square)](https://www.npmjs.com/package/@lushijie/thrift-json)
我们当前开发模式:客户端请求 Node 层, Node 层通过 thrift 与后端 rpc 通信, Node 层以 json 格式将获取到的数据返回客户端,大家在定义好 .thrift 文件之后前后端就各自开始开发了...
对于前端来说,现在没有可用的接口拿不到返回结果。但是 Node 层和客户端需要 mock 数据来写逻辑。这时候就需要翻译 .thrift 文件,来获取接口将会返回的数据结构,然后再为每个字段 mock 特定数据。
我们可以看懂 idl 表达的数据结构,但是当数据结构超级复杂的时候,我们在脑海中其实已经启动了一个“线程”将其快速地转化为 json 结构,每次写逻辑都会走一遍这个”翻译“流程。当使用了 ”include“ 命令的时候就更麻烦了,要来回的切换文件,切着切着就忘记刚刚看过的结构了...
biu biu ... thrift-json 就诞生了! thrift-json 是一个根据 .thrift 文件生成 json 数据结构的工具。
tjson -f a.thrift --name User
npm install @lushijie/thrift-json -g
tjson 参数:
使用示例,存在如下目录:
* demo
* case
* a.thrift
* b.thrift
进入 cd /demo,此时目录存在 case 目录,目录中包含 a.thrift 与 b.thrift
1. 编译 case 下所有的 .thrift 文件 (在 case 目录下生成 a.mock.js、b.mock.js)
tjson -d ./case
2. 编译 case 下的所有 .thrift 文件,并改变输出目录(在 /a 目录下生成 a.mock.js、b.mock.js)
tjson -d ./case --output /a
3. 编译 case 下的 a.thrift 文件(在 case 目录下生成 a.mock.js)
tjson -f ./case/a.thrift
4. 编译 case 下的 a.thrift 文件,并重命名 (在 case 目录下生成 a1.json)
tjson -f ./case/a.thrift --output ./case/a1.json
* 此处重命名文件后缀只能是 .js 或者 .json
5. 编译 case 下的 a.thrift 中 User 结构体(在 case 目录下生成 a.json,仅包含 User 结构体)
tjson -f ./case/a.thrift --name User
6. 编译 case 下所有的 .thrift 文件,生成 .json 文件(在 case 目录下生成 a.mock.json、b.mock.json)
tjson -d ./case --outext .json
7. 编译 case 下的 a.thrift 文件, 输出 service 中 SMSService 的 send 方法
tjson -f a.thrift --name SMSService --method send
8. 自动生成 mock 数据
tjson -f a.thrift --auto
tjson run
tjson run 通过交互式的命令来使用,这样就不用记这么多的参数了!
npm install @lushijie/thrift-json --save
// 获取 a.thrift 中 User 结构体的结构
const thriftTool = require('@lushijie/thrift-json');
const res = thriftTool.parse({filePath: '/usr/a.thrift', name: 'User', auto: true});
console.log(res);
module.exports = {
basic: '◎', // 基本类型,如i32, string, bool ...
required: '★', // 必填字段
optional: '☆', // 选填字段
enum: '✼', // enum 类型
enum_or: '┇' // enum 连接符
}
获取到数据结构之后,接下来就是生成 mock 数据 ~~~
但是现实的情况是每个字段都有很强的语义,比如一个菜品 mock 出来一个城市名,这是不行的!也不可能为每个字段指定 mock 规则。
所以提供了 --auto 参数,如果提供了 auto 参数,会根据 thrift 基本类型生成一些无语义的随机数...
如果mock 数据语义化要求较高,可以在生成的 .js 文件中自行使用各种各样的 random 类库创造属于自己的 mock 数据 !!!
第三方库暂时还没有解决上述问题,所以 fork 了一个,暂时做了兼容处理
FAQs
[![npm](https://img.shields.io/npm/v/@lushijie/thrift-json.svg?colorB=brightgreen&style=flat-square)](https://www.npmjs.com/package/@lushijie/thrift-json)
We found that @lushijie/thrift-json demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.
Security News
Node.js will be enforcing stricter semver-major PR policies a month before major releases to enhance stability and ensure reliable release candidates.