import{_ as r,D as t,c as l,I as o,a4 as e,o as i}from"./chunks/framework.DtvhUNIn.js";const P=JSON.parse('{"title":"基础部分","description":"","frontmatter":{},"headers":[],"relativePath":"技术资源汇总(杭电支持版)/7.网络应用开发/7.3.1基础部分.md","filePath":"技术资源汇总(杭电支持版)/7.网络应用开发/7.3.1基础部分.md"}'),n={name:"技术资源汇总(杭电支持版)/7.网络应用开发/7.3.1基础部分.md"},h=e('
作者:iyear 、后端的小伙伴们
🎇
Hello~这里是杭电助手技术部后端,无论基础如何,您都可以跟随着这篇文章的指引,使用 Golang 开发一个基于 Web 的简易登录系统后端部分。
本任务将涉及以下知识:
不需要担心,后续我们将给出充足的资料和路线,相信这些对你一定不是难题~
在学习初期,视频可以帮助你快速理解并踏入大门,但在学习的后期,文档&博客才拥有第一手资料和最新动态 (视频就像你的教科书,更新的脚步永远跟不上技术)。
在任务初期我们将给出对应的视频资料,在后期我们只给出图文资料。
👏 当然,这不是强制要求:学的舒服是原则
Go(又称 Golang)是 Google 开发的一种静态,强类型、编译型、并发型的编程语言。其于 2009 年 11 月正式发布,成为开源代码项目。Go 的语法接近 C 语言,但其支持垃圾回收功能,开发效率远高于 C 语言。而其对海量并发的支持,以及在运行效率,低内存消耗方面的优异表现,也有人称其为互联网时代的 C 语言。
↑ 太官方了,我的评价是不如看资料 (
官网虽然是英文,但是非常非常的友好,近年还刚翻新过一次好看了许多,还有各种可爱的吉祥物插图。
这只吉祥物囊袋鼠的英文学名为 Gopher,每位热爱 Golang 的开发者都会自称 Gopher (就像 jvaver 一样 (x),而它的造型出于创始人之一 Rob Pike 的妻子之手。
Golang 官网 (非常好记:go.dev(eloper))
一些第三方的前景概览
对比两篇博客,可以清晰地感受到 Golang 的发展之快:曾经还在娘胎里的 Golang,现在已经在云原生、微服务、CLI 程序、DevOps、区块链等领域大杀四方。
Golang 是一门年轻的语言 (相比 Java & JavaScript),它没有那么多的历史包袱,所以环境搭建在一众语言中可以算得上十分容易。同时 Golang 自带了丰富的工具链,许多 Gopher 的整个职业生涯中可能都不需要用到官方工具链以外的相关工具。
📌
本小节还请同学们各显神通,由于不同计算机不同环境不同平台的区别,Golang 环境搭建各有区别。资料中将尽可能给出一些教程,但具体需同学们使用搜索引擎寻找最佳实践。出现问题在群内积极提问~
对于 IDE 的选择:
在这里推荐两个比较流行的 IDE
首先是万能的 VSCode
https://code.visualstudio.com/
还有智能的 GoLand
喜欢折腾的同学可以选择 VSCode 作为自己的开发工具,如果想能够马上上手学习的同学,可以使用 GoLand 作为自己的开发工具
🤭
GoLand 可以使用教育邮箱学生认证白嫖噢~👀
https://learn.microsoft.com/zh-cn/azure/developer/go/configure-visual-studio-code
https://polarisxu.studygolang.com/posts/go/2022-dev-env/
这些文章只是帮助你理解的更透彻,看不懂完全没关系。甚至你完全可以跳过他们,在任务结束后再来看看,或许你会有更多收获。
Golang 的语法是 C/C++ 系的,在许多地方你都可以看到他们的影子,这对未来 C 的学习更有自顶向下的帮助。当然,如果你曾经用过 Java、Python,Golang 的语法你可能会不太习惯,这不会是问题~在熟悉语法后,你会发现“Golang 一把梭”是真实存在的 🤓。
对于基础语法的学习,无需一时学习过深,也不必花费过多时间在此。即使半懵半懂,在多次实践后也会渐渐领悟
本次任务并不需要用到反射、并发等高级特性 (学到时可选择性暂时避开),最深只需要用到结构体与方法的相关知识。
https://tour.go-zh.org/welcome/1
https://learnku.com/docs/the-little-go-book
如果你从未接触过协议二字,那 HTTP 协议将是你大学生涯最重要的协议之一,也是 Web 的基础。与其说是小任务的基础,我更想说这是对人类互联的探索。
HTTP 协议起草与演进之路十分坎坷,但每一步都举足轻重,在人类历史上画下了浓墨重彩的一笔。
https://www.ruanyifeng.com/blog/2016/08/http.html
https://book.douban.com/subject/25863515/
https://www.runoob.com/http/http-intro.html
原本稀薄的得以聚合,曾经蜷曲的得以伸展,容易被忽略的得以显现,可能被排斥的获得接纳:孤独的不再孤独,卑微的不再卑微,每一个生命绽放的声音,从来没有像这样韵味深长。
MDN 是一个不断发展的学习网络技术和网络软件的平台。MDN 的使命简单明了:提供一个更好的网络蓝图并赋能新一代开发者和内容创意者在此之上构建网络。
一些题外话:是的,任务期已经过去了约十天 (当然优秀的你可能更快~),但在我看来,小任务其实已经不再那么重要了。如果在以上小节中你曾感到兴奋、热情、探索的欲望,我诚挚地相信,你能在技术的道路上走的很远很远~
用了这么长的时间铺垫了以上的基础知识,脑子肯定胀满了各种各样的东西:if for range slice interface http …… 是时候释放他们了!
这次的小任务我们将设计一个简易的登录系统,它将十分简单,简单到甚至只需要一个 .go 文件,但可能也很难,它直接或间接地包含了以上几乎所有内容。
经过了上文详细的“喂饭”小节,下面轮到同学们自己吃饭了~
使用 Gin 框架设计登录系统的接口与整体结构。
至少设计 Login GetUser Logout 三个接口,对 GetUser 接口鉴权。
在 HTTP 小节中,“路由“接口” “鉴权” “请求” “响应”你一定或多或少地接触过,Gin 就是一群 Gopher 大神帮你解决了这些问题,它十分轻量但五脏俱全,你只需要调用几个函数就将 cover 那些复杂的问题。
请运用你在第三小节中学习的 Golang 包(依赖)管理 正确地安装 Gin 并学习使用它。
相关资料:
如果 GetUser 接口来者不拒,那么任意信息都可以被外部人员访问到,这将是一个严重的安全漏洞。所以在 Login 与 GetUser 之间,有着一种隐隐约约的联系:只有登录成功且对应的用户才能读取到他的个人信息。
好啦,总之,鉴权是每个 Web 系统的重要部分,不说太多 😛
🔔
发挥你的想象,让你的服务变得更加可靠、有趣、优雅~
不卷大家啦,发挥你的想象吧,想法是编写程序的关键。
',22);function g(u,b,_,f,m,G){const a=t("Bilibili");return i(),l("div",null,[h,o(a,{bvid:"BV1zR4y1t7Wj"}),p,o(a,{bvid:"BV1zR4y1t7Wj"}),s,o(a,{bvid:"BV1zR4y1t7Wj"}),c,o(a,{bvid:"BV1uE411o7UW"}),d])}const T=r(n,[["render",g]]);export{P as __pageData,T as default};