实习记录day03:尝试写一个接口
前言:今天突然意识到,实习记录很少有技术性的东西,更多的是自己的心里活动和一些感想,其实这类博客更趋向于日记而非技术记录。也许哪天不再充满兴趣了,这个实习记录也就结束了(想下班了同志们)
实习第三天:
上午9点打卡,我今天8点38就打了,看来明天还是晚起十分钟,多睡一会
上午第一件事问问大哥有没有什么活,大哥给了我一个扩充条件查询的任务:
首先修改后端,找到对应的接口之后从controller-》service-》mapper-》mapper.xml一层一层往下看。看到service的时候我都懵逼了,怎么一个分页查询写了200多行,有这么多的mapper在里面,本着好好学习的理念我先快速浏览了一下代码,果然没看懂.....不过我找到了我需要修改的那个SQL对应的mapper,点进去之后我又傻眼了:一个SQL怎么有200行,join了10个表,不是说阿里公约规定不建议用join连接应该把这个分散在service里吗?不过还好,我的任务不是梳理SQL,我只要找到我新增的那两个内容对应的表的别名,然后往后堆<if>就好了。除此之外,我还需要给dto添加两个我写的额外的内容。至此后端的修改就算完成了。
在前端新增两个视图,这个可把我难住了,我现在能根据请求立刻找到前端的js,根据URL找请求,再根据请求找params。然后想法把数据填进params。那么问题来了,我该去哪找这个html呢,我发现压根没有和js对应名称的html。经过我地毯式搜索半天,最终我放弃了,因为我又想到了另外一个主意:根据页面上的中文div去搜这个页面。然后我发现好多div内的中文都被封装了.....还挺不好搜,不过幸好有个漏网之鱼,估计是后加的,所以我很快就定位在了两个网页,通过实验对比我确定了是哪一个网页,添加上了输入框。照葫芦画瓢添加输入框之后,我又在找怎么把数据放入params,我翻遍了那章JS,却等到一个相关字段,之后我抱着试一试的心态直接发送请求,居然把我添加上的内容携带了,那么按理来说我的任务就算完成了。不过我没有查看数据库的权限,而网页内显示的数据是没有我输入的字段的,就是说我没有测试数据,最后我通过乱输测试了一下,看看能不能查到内容,id那输了个1,成功了,修改到此为止。
因为时间还很充裕(我抱着强烈的好奇心想看看这个分页的service是怎么实现的),我看了那个service的实现,经过我大概半个多小时的梳理,终于明白了他的大概流程:分页订单查询是一个多角色使用的查询,这里的代码将不同角色不同权限耦合在了一起,也就是说,在开始查询的前面必须要抽出来当前查询的用户角色,然后根据角色为query附上更多查询条件以便于过滤内容。在查询出内容后,又要根据不同角色权限去为查询出来的数据添加一些额外的内容然后将他们一并返回。我还注意到了一些特别的内容:1.实现方法的开始,还特意为数据导出提供了一个额外的变量:当使用数据导出功能时,为了防止数据过多导出来直接崩溃,设置了1000条一页的查询,以便于安全实现。2.在商户查询自己旗下的订单时不仅需要根据自己的ID过滤,还需要根据自己当前的地市再加上过滤条件。了解完这个流程之后就已经快到饭点了,我把代码推上去上午的活动也就结束了。
关于git的commit message,我昨天看到了大家的commit message的格式是【姓名】当次内容,而我之前都是只提交了内容(因为经常看游戏修复了XXBUG,所以我也会在提交的时候模仿这种口吻,类似于:修复了XXX,现在他变得更完善了)
中午:恰饭!不过今天的午饭不是很给力,很素很淡很减肥。但是由于我饿了,还是吃了很多....吃完回去的路上遇到了大哥(应该是?),很遗憾的是我没认出来,大哥和我打招呼问我吃了吗我说吃了当时还在好奇这谁?....现在稍微有点困了,我打算先看看leetcode再睡觉,今天写的是leetcode283移动零:两层for循环就可以过,看了大佬的优化只需要一层for循环,有一个非0的计数器:不是0就覆盖计数器的值,计数器++,这样循环结束后,当我们的计数器的下一个值开始一直到最后就都赋0即可。我的腿上被蚊子咬了十几个红包,妈呀,明天开始不穿短裤了,今天已经喷了好几次花露水了,再咬要变成火腿肠了T^T
下午:想咬打火机了
上午代码写错位置了,金箔的怎么那么多长的差不多的代码块。改了半天最终很无奈只能发给大哥,大哥直呼没问题,后面过了半天大哥告诉我是万能解:缓存锅
然后开始下午的任务:大哥让我写一个接口,仿照一个分页查询,写一个分组查询。第一次写接口还是有点小激动的,又仔细阅读了开发者手册:取名get是返回单个数据的,取名find是返回list的,取名query是返回分页的。
之前一直以为是上面不愿意给数据库文件,今天和大哥说我一直是摸黑测试的,大哥交了我平时怎么找sql,先找到yaml这类的配置文件,然后通过里面的jdbc,user,ps等等就可以在自己这链接上数据库啦,后面大哥还告诉我这里面都是测试数据(不过这东西是存在公司的服务器),想咋改咋改。不得不说看着好几十个字段好几十个表,黑压压长长的满是null的库,很难受。
命好名之后我先画了个流程图,然后问大哥,经过多次审批(2次)大哥觉得我的图没问题了,那么我的代码也就没问题了(大概吧,明天才会知道,今天已经没有想测的时间了)配一下模块里没用过的启动类,查查数据库熟悉一下dbaver,弄弄swagger看看jwt不如今天就到这里吧,实习生6点该润还是要润的
实习记录day03:尝试写一个接口的更多相关文章
- 第二篇 -- Django写一个接口并用Jmeter进行测试
第一节学习了Jmeter的下载和安装,那么第二节就来看看具体怎么使用. 本篇介绍的是使用Jmeter进行http接口测试,那么接口程序使用Django开发的一个小接口. 一.Django编写接口 这一 ...
- Flask--第三个例子,写一个接口,该接口返回html前端页面,模板的使用
将接口数据返回至html前端页面有两种方法 方法一: 1 @app.route('/index',methods=['get']) 2 def open_index(): 3 page=open(' ...
- 纯后端尝试写一个前端slide插件
概述 由于项目组前端人员缺失,又赶上需要在手机端做一个slide效果的页面,所以只能自己硬着头皮上了,写的很简单,请大家不要笑话,只是拿出来分享下,大家先看下完成后的效果,如下: 过程 看了效果图是不 ...
- 在dedecms系统下, 改写火车头的入库接口 写一个接口文件运行一次自动读取 http://news.163.com/rank/
1:火车头入库接口里面的密码与login.php传过来的密码是保持一致的: 2:在(!$ispost)里面编写一个form表单提交,验证用户名,channelid,以及typeid; html代码格式 ...
- 用openresty(Lua)写一个获取YouTube直播状态的接口
文章原发布于:https://www.chenxublog.com/2019/08/29/openresty-get-youtube-live-api.html 之前在QQ机器人上面加了个虚拟主播开播 ...
- 写一个Spring Boot的Hello World
尽管这个demo也就hello world水平,但我还是要记录一下(总算能动了QAQ),毕竟老是看文章不动手不行啊 上次写Servlet的CRUD项目还是2月份,虽然代码忘的差不多了,但我就记得JDB ...
- Swagger解决你手写API接口文档的痛
首先,老规矩,我们在接触新事物的时候, 要对之前学习和了解过的东西做一个总结. 01 痛 苦 不做.不行 之前,前后端分离的系统由前端和后端不同的编写,我们苦逼的后端工程师会把自己已经写完的A ...
- 手写一个简版 asp.net core
手写一个简版 asp.net core Intro 之前看到过蒋金楠老师的一篇 200 行代码带你了解 asp.net core 框架,最近参考蒋老师和 Edison 的文章和代码,结合自己对 asp ...
- 怎样写一个webpack loader
div{display:table-cell;vertical-align:middle}#crayon-theme-info .content *{float:left}#crayon-theme- ...
- 用Python写一个简单的Web框架
一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...
随机推荐
- Postman 的 Basic Auth 如何通过 Feign 实现
Postman 的 Basic Auth: 分析 根据以上图片分析: Postman 的 Authorization 实际为: header 中添加 Authorization: ******* ** ...
- MoneyPrinterPlus:AI自动短视频生成工具-阿里云配置详解
MoneyPrinterPlus是一个很好的自动短视频生成工具,虽然是一个非常好的工具,但是有些小伙伴可能不太清楚具体应该如何配置才能让它跑起来. 因为MoneyPrinterPlus依赖一些具体的配 ...
- K-means聚类是一种非常流行的聚类算法
K-means聚类是一种非常流行的聚类算法,它的目标是将n个样本划分到k个簇中,使得每个样本属于与其最近的均值(即簇中心)对应的簇,从而使得簇内的方差最小化.K-means聚类算法简单.易于实现,并且 ...
- Xcode调试内存最新理解
前提: Xcode 16.0 beta 设置 Scheme设置中勾选Malloc Scribble.Malloc Stack Logging. 这么做是为了在Memory Graph.Profile中 ...
- 纯代码搭建iOS三级结构(UITabbarController+UINavigationController+UIViewController)
声明:这里所指的三级结构不是网上百度中所经常提及的三级框架或者MVC模式,而是指UITabbarController+UINavigationController+UIViewController. ...
- C++ 史上首次超越 C,Python 第二!
TIOBE 公布了 2024 年 6 月的编程语言排行榜--C++ 史上首次超越 C,跃至榜二,仅次于 Python. C++ 是一种广泛应用于嵌入式系统.游戏开发和金融交易软件等领域的语言,在本月成 ...
- 【ClickHouse】6:clickhouse集群高可用
背景介绍: 有四台CentOS7服务器安装了ClickHouse HostName IP 安装程序 程序端口 shard(分片) replica(备份) centf8118.sharding1.db ...
- Windows服务器安全检查
为降低windows服务器系统的脆弱性,除了补丁及时更新,还建议加强系统账号的管理. 1.精简系统登录账号,最小化登录权限 检查方法:开始->运行->compmgmt.msc(计算机管理) ...
- HTTP常见的状态码?
100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息 200 OK 正常返回信息 201 Created 请求 ...
- VUE商城项目 -权限功能 - 手稿