V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
darkings90
V2EX  ›  程序员

造一个 Postman 平替的「创作历程」

  •  1
     
  •   darkings90 ·
    kings1990 · 2023-10-18 08:50:01 +08:00 · 4125 次点击
    这是一个创建于 400 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位 V 友以及开发者,今天聊聊我的IDEA 插件 Fast Request创作历程,一个类似 Postman 一样的懒人插件。

    前言

    我是一个非常非常的人,怎么懒呢?比方说要将 100 个字符串整点啥东西改成另外 1 个东西,手写替换是不可能手写的,只要涉及到经常要手写的就很烦,宁可画半个小时写正则替换,绝不手写,最笨效率最低但也是不大会出错的方法。

    同时作为一名增删改查 crud工程师,每天要调试几十个接口。有一天我打开一个别人写的保存接口,居然有上百个字段,彻底懵了,下次完蛋了造数据得死。对了一开始我用 postman ,后来觉得有点难用,后来用 mac 上面的 paw ,现在叫Rapid Api,确实非常简捷,但是后面 Postman 发展迅速,就又用回来了。

    但关键是我不喜欢手写,所以寻思着用意念搞点事情。当时为了不想手写Rap2的接口文档于是搞了一个Rap2 Generate,这个是创作 Fast Request 之前的一些积累。在闲的时候想把这个项目转到 IDEA 里面,最后发现好难,放弃了。

    准备工作

    但有一阵子我实在太闲了,闲的发慌(在完成任务以后)。于是乎又想到了之前一直要手写 API 中 100 个字段的 Body ,实在太痛苦,就开始想搞个自动生成参数的工具。当时有 RestfulToolkit ,但是满足不了需求而且停更了,于是乎想着搞个啥玩意,可以快速请求 API ,至少先能生成 100 个字段的参数吧。当天我创建了一个项目,就叫Fast Request

    前几天啥都没搞,一直在写参数生成的逻辑,参考了 Rap2 Generate 的一些解析逻辑。发现用正则来做解析实体类,简直就是一堆,突然发现 IDEA 里面有关于一些PSI相关的文档,同时也参考了一些实体类转 JSON 生成的一些插件。然后就坑此坑次开始写解析的逻辑。写得太投入被领导发现了,领导说:"你在写啥,什么玩意,Fast Request 什么项目,业务都清楚了么",被 PUA 半个小时。我想说,写 crud 多了有时候真的有点腻,想玩点有点意思的。当天我暗暗下定决心,一定要搞个神器出来,干死你。

    艰难的开始

    本着“干死你”的理念,我开始创作了。搞一个 IDEA 插件真的太难了,只有这些文档,其他的自己 Google ,自己看文档,自己看源码。前期太难了,没人教。还好当时参考了阿里大神写的Easy Javadoc,也提交了一点 PR 熟悉了一些代码,比起一点都没至少有项目可以参考了,很多小白选手至少参考。于是乎,我差不多花了 1 个多月,第一个版本成了,啥都没,就点一下生成参数到 console ,跟你下面看到的界面简直差了 10 万个版本

    UI 这一块,我比较注重。我出了很多个版本的界面,不停的优化,同时参考了 JetBrains 的 UI 设计规范以及其他的例如JetBrains 设计准则,所以励精图治得改,改界面,加功能,UI 风格保持一致。最后界面也越来越受到大家的认可。随着 JetBrains 新 UI 的到来,插件也打造了跟新 UI 风格一致的界面,保持整体简洁大方。

    在这个过程中,功能的开发也确实难,在 Swing 基础很差的情况下,想要搞一个全是由 Swing 组件构成的工具,简直就是痴人说梦,于是我又查了很多关于 Swing 的资料以及 demo ,这边有很多例子需要的同学可以参考。整个前期真的没有周末,周末都是干到晚上 11 点以后,搞这个插件真的太累了,又太兴奋了,学了很多知识。合理运用了很多时间去学习技能。

    最后随着一步一个脚印,我的插件慢慢有了用户,同时用户也会给我一些反馈,前期自己的灵感占了 90%,用户给我提一些问题,又可以解决一些常见的痛点。功能越来越丰富,同时也参考了 Postman 的一些功能,设计一些必要的功能,毕竟它是业界最优秀的 API 调试工具值得学习。但是插件要做到的不只是发送请求这么简单,还要跟代码结合,做一些更加有优势的功能,那就是能让用户懒的功能。我也是一直如此,毕竟 Fast Request 的格言就是“为简化 API 调试而生”。

    什么很重要

    打造一个能吸引人的软件,首先创意和想法很重要,需要不停的肝新功能、好功能,能直接解决用户痛点,持续输出。然后就是用户慢慢累积的过程。开发过程就是硬碰硬克服困难,很多不会的需要去研究克服,在此过程中积累经验,对后期就非常有帮助。自学能力也非常重要,得会问问题,查问题,现在又有 AI ,给工作带来不少的便利。

    叫过人一起干

    前期想法非常多,但是个人输出有限,就叫了一些朋友看是否有想法加入。但是每一个人似乎都挺忙,要么就是入门太难接不住,好吧,这玩意确实有点难度,我一个人承包了设计、开发、测试、网站建设、推广一条龙服务。后期随着熟练度的提升,目前感觉开发这一块一个人也基本忙的过来了。也就没有继续叫朋友来协助了,毕竟生活大于一切,像我这种投入的,生活上也是有所牺牲的,经常被女朋友骂大晚上还不睡觉,一路走来还是非常感谢家人和朋友的支持的。

    倒下了

    没人来帮忙,所有的一切只能单干。好家伙,别人是一个团队干一件事,我是一个人干一个团队的事。上面描述的过程可能并没那么简单,一路走来碰到了非常多的磕磕碰碰,不幸的是中途倒下过一次。由于长期劳累,坐在电脑面前工作,导致腰椎间轻微突出,在家躺了 3 天。所以我也劝解各位开发者要注意劳逸结合,千万不能太上头了,身体是革命的本钱,一定要走可持续发展的道路。这一点相信很多一路陪伴的小伙伴也知道,前期几乎一个礼拜一个版本,用户都觉得速度太快了有点刹不住车...

    开始收费

    相信很多开发者可能会说,插件啥都好,就是要收费。但是收费也是经过我深思熟虑的,这毕竟会对软件的推广有一定的阻碍,很少会有博主来推广付费的东西。但是积极作用更大。一个人的精力和热爱也许会时间的流逝慢慢减退,收费对我来说,也是更加对用户负责的开始,是变更加强大的开始,这也让我更加有热情去更新功能,修改 bug 。同时也感谢一路支持的朋友没有因为收费就抛弃 Fast Request 了,相信这是一个双向选择的结果。对于需要的开发者,对于工作日一天花费 3 毛多的成本来提升工作效率,相信也不多。不喜勿碰哈哈哈哈。

    挑战

    当前最大的挑战就是推广问题,似乎还有很多很多的开发者不知道有这么一个神器,可以一键调试接口。但是收费了似乎吓退了一波的开发者,用户起码少了三分之二以上,不过这个模式我既然开始了就不会再改变。运营推广对我来说也是没啥经验的,期间也一直在出视频教程在各大技术网站上投稿,效果一般。当然也有一些技术大咖比如 java guide 、程序员 DD 中间给软件写了几篇博文,对于 Fast Request 来说也是非常大的帮助与支持,做了一波推广,在此非常感谢。同时也希望得到更多大神与技术老铁给予相助和支持,提提意见,给一个不懂流量的技术人一点帮助,多帮忙推荐推荐 Fast Request 。

    收获

    目前斩获了17w的下载量,用户也非常喜欢 Fast Request 给他们带去的帮助。这一点我非常开心自己的作品被大家认可。除了经济上的一些收入,当然以下几点是非常重要的。

    1.结识了一大批粉丝朋友
    2.加入了 Dromara 社区,认识了一大批软件圈大佬
    3.结识了一批 IDEA 社区工作者大佬,也给我提供了一些建设性意见,非常感谢
    4.上过 JetBrains 中国 Bilibili 的码上道栏目直播,非常荣幸
    5.无聊的时候没那么无聊了
    

    相对比较全功能文档: https://api-buddy.cn/fast-request/guide/features/

    部分功能截图↓↓↓

    23 条回复    2023-11-01 13:55:41 +08:00
    SuperXX
        1
    SuperXX  
       2023-10-18 08:53:20 +08:00 via iPhone   ❤️ 2
    你都这么懒,居然还写了这么长的帖子😄
    seyoatda
        2
    seyoatda  
       2023-10-18 08:54:24 +08:00
    一直在用 postman ,但是比较痛苦的一点就是针对请求的不同的参数和 body 没法分别保存成多个副本。导致每次 debug 时,都得重新输入参数和 body 。目前换了几个工具好像都没有比较好的解决方案
    darkings90
        3
    darkings90  
    OP
       2023-10-18 08:54:29 +08:00
    @SuperXX #1 一天写几十个字😂
    darkings90
        4
    darkings90  
    OP
       2023-10-18 08:55:55 +08:00
    @seyoatda #2 https://api-buddy.cn/guide/features/apiGroup.html 同一个 api 下的分组参数保存
    holulu
        5
    holulu  
       2023-10-18 09:06:24 +08:00   ❤️ 1
    IDEA 插件的开发体验是很遭,只看文档完全搞不了,大部分时间都翻现有插件的源码。
    miaotaizi
        6
    miaotaizi  
       2023-10-18 09:08:38 +08:00
    IDEA 里面不是应该写测试吗, 为什么要用这种 api 工具?
    c9792536451
        7
    c9792536451  
       2023-10-18 09:20:40 +08:00
    支持 op ,不过我觉得这些 api 工具同质化太严重,一般用习惯一个以后就不太想换别的工具了。
    zsj1029
        8
    zsj1029  
       2023-10-18 09:24:18 +08:00
    https://hoppscotch.io/ 竞品,国外的好像是,自带中文,没有客户端,纯网页
    qinyui
        9
    qinyui  
       2023-10-18 09:31:33 +08:00
    @zsj1029 这个不能生成文档,就这点不太好
    darkings90
        10
    darkings90  
    OP
       2023-10-18 09:32:54 +08:00
    @qinyui #9 缺少前端大佬哈哈哈
    96XLLL
        11
    96XLLL  
       2023-10-18 09:38:20 +08:00
    话说,每次点接口都会自动添加一个项目名和 local 的环境名,不存在就会自动添加,删掉还会添加进来。我想用自己的习惯命名,怎么样才能不让插件自动添加呢
    darkings90
        12
    darkings90  
    OP
       2023-10-18 09:40:56 +08:00
    @96XLLL #11 关闭自动域名,https://api-buddy.cn/guide/features/autoDomain.html ,不过不建议关闭,自动域名开了以后只要修改一次域名就完事了,对接口下来模块下的所有 api 都生效,不需要手动再做切换
    codeself
        13
    codeself  
       2023-10-18 09:50:17 +08:00
    @seyoatda 我是用 postman 的笨办法,在"pre-request-script"或者"tests"里用注释的形式把参数记录在里面
    bluedreamfei
        14
    bluedreamfei  
       2023-10-18 10:14:36 +08:00
    我用过这个插件。老哥你知道为什么 idea 的 httpclient 插件会移除图形界面吗,我用这个插件的唯一感受就是不能与 httpclient 插件的命令行结合起来,用起来感觉很繁琐,如果添加一个功能,能够点击 cotroller 图标,自动生成 httpclient 命令代码,我想我是会支持的,现阶段只能放弃了
    snowAix
        15
    snowAix  
       2023-10-18 10:26:39 +08:00
    用了一年了! 好用! 极大的提高了我通过接口地址找到具体代码的效率(只需要 alt + f 再粘贴接口地址就好了)! 并且新写好一个接口后,只需要点一下左边的 R 图标就可以进行接口测试了! 很方便! 已经推荐给几个同事和好友了!
    kingbill
        16
    kingbill  
       2023-10-18 10:45:06 +08:00
    为什么不用 IDEA 自带的 HTTP Client 呢,还能和浏览器的 curl 联动,不是更省事吗
    kingbill
        17
    kingbill  
       2023-10-18 10:46:45 +08:00
    @bluedreamfei 看了一下,换个思路也可以,这个插件可以 copy curl ,然后直接把 curl 粘到 HTTP Client 里,会自动转换的
    fzdwx
        18
    fzdwx  
       2023-10-18 11:10:51 +08:00
    不开源的程序,也能加入一个所谓的开源组织?

    fzdwx
        19
    fzdwx  
       2023-10-18 11:14:32 +08:00
    @fzdwx #18

    不好意思,我英语不好。。。原来是 开源爱好者聚齐的非盈利组织

    rainfy
        20
    rainfy  
       2023-10-19 09:28:36 +08:00
    前两天下载了,正在用。提个建议,目前功能很多,感觉页面特别乱,找了半天没找到把不用的功能隐藏的地方。希望添加一个功能,把不常用的功能用...隐藏,想用的时候鼠标悬浮在...上再展示。
    whoami9426
        21
    whoami9426  
       2023-10-24 15:53:43 +08:00
    简单的用 idea 自带的 HTTP Client , 麻烦的用 apifox
    whoami9426
        22
    whoami9426  
       2023-10-24 15:56:10 +08:00
    @xiaodingsiren api 搜索用 idea 自带的 endpoints
    seyoatda
        23
    seyoatda  
       2023-11-01 13:55:41 +08:00
    @codeself postman 最近新版本好像是必须登录才能使用了。之前用的 scrathpad 为了不同步云端。因为 api 多了同步起来真的很卡。而且多多少少也会担心数据安全问题。我之前是专门保存在不同文件里要用的时候再手动 Copy 过来。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   983 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:19 · PVG 05:19 · LAX 13:19 · JFK 16:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.