实习记录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( ...
随机推荐
- Simple WPF: WPF 实现按钮的长按,短按功能
最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园. 实现了一个支持长短按得按钮组件,单击可以触发Click事件,长按可以触发LongPressed事件,长按松开时触发LongClick ...
- h5使用js拉起微信支付
近期,业务需求对接了微信支付,做个总结.web网页想要拉起微信支付,有两种方法: H5下单支付 , JSAPI支付 .首先纯前端做不了微信支付,必须配合后端才能通过微信的下单请求.接下来说说这两种方法 ...
- 疑难杂症(已解决) | 为什么出现python中tkinter创建界面需要一闪而过才进入主窗口?
一.具体问题 如图所示,我编写了一个主窗口的程序(如下所示,有兴趣的可以自己复制后运行),发现需要先进入第一个窗口再进入主界面,这不符合逻辑. 代码区域(完整代码): from tkinter imp ...
- [oeasy]python0085_ASCII之父_Bemer_COBOL_数据交换网络
编码进化 回忆上次内容 上次 回顾了 字符编码的 进化过程 IBM 在数字化过程中 作用 非常大 IBM 的 BCDIC 有 黑历史 6-bit的 BCDIC 直接进化成 8-bit的 EBCDIC ...
- 领域驱动设计(DDD)分层架构的三种模式
模式一:四层架构 1.User Interface为用户界面层(或表示层),负责向用户显示信息和解释用户命令.这里指的用户可以是另一个计算机系统,不一定是使用用户界面的人.2.Application为 ...
- 靶机练习: y0usef
靶机: y0usef 准备工作 靶机地址: https://download.vulnhub.com/y0usef/y0usef.ova MD5 校验:28c5d869b003be94b2d8ab4b ...
- XR实时云渲染:助力虚拟仿真实训教学呈现
近年来以5G.云计算.大数据.物联网.人工智能.虚拟现实/增强现实为代表的新兴技术迅速发展加速创新,日益融入经济社会发展各领域全过程,世界主要国家和地区纷纷加快数字化转型战略布局. 虚拟仿真系统是一种 ...
- mysql 忘记root密码怎么办?
忘记root可以跳过grant table来登录 1.打开命令行输入以下命令 mysqld -nt --grant-skip-tables 2.在打开一个新命令行,输入以下命令可以登录, mysql ...
- 使用后台模板,cnpm install报错
- java的自动拆箱会发生NPE
平时的小细节,总能在关键时刻酿成线上事故,最近在代码中使用了Integer的自动拆箱功能,结果NPE(NullPointException)了,悲剧啊... 一.何为自动拆箱 要说自动拆箱,就必须说自 ...