上午做了一个导入excel数据的功能, 前端使用AlaSql很快实现了, 一条sql即可完成读入表格转为JSON, 之后再对JSON进行一些处理. 在提交的时候, 突然发现HTTP对于数据传输其实不算很友好. 默认的application/x-www-form-urlencoded方式要对数据进行URL 转码, 对于大连数据来说不想承担这种开销. 而流行的application/json其实也是需要对内容进行转义的, 而且到服务器上还要解析JSON, 再处理. 我想简单传输大量数据, 所以想到封装成文件上传, 查了File和BLOB的API, 感觉也不是特易用, 网上的各种说法也不尽统一, 按照最简单的格式调用构造函数依次产生BLob, File, FormData对象之后, 又遇到了fetch的坑, 服务器返回400, 500, 401等状态码, 最后看到有人说, fetch上传文件不能设置Content-Type头, 终于可以提交上去了. 但是还没完, 服务端又出错, 本来Spring封装的文件接收是挺简单了, 但是我们的环境好像不太一样, 查了一下以前的代码, 改了一下接收文件的方式, 总算接收到了文件. 文本编码格式算是相对简单的问题了, 稍微设置一下, 但还是少不了重启, 再测试一遍. 最后看数据库, 数据成功插入进去了, 才算完成基本功能.
但是还有很多细节要处理, 异常情况的处理, 出错提示, 某些字段的内容要从环境中获取, 考虑用户使用是否方便, 等等.
总结:
Web还不是一个很方便完备的开发环境, 很多基础的功能真的很弱, 但是已经很流行了. 所以还是要努力去适应. HTTP协议很简单, 但是有些时候不是那么好使, 如果用Websocket估计一个方法就可以把文本或二进制数据发过去, 但是后端还要建相应的环境, 也不简单.
java太过沉重和复杂, 复杂的类层级结构带来了很多无谓的转换开销和学习成本, 正在考虑绕过java, 直接使用数据库的功能, 或者加一些轻量级的后端环境. 比如Node或Go.
这就是程序员的日常生活, 在各种参差不齐的技术中间查询, 学习, 尝试, 折腾, 拼成能用的产品. 如果压力不大, 还可以说是有一些乐趣, 如果进度紧, 要求高, 就只能自己调整状态了.