24 | Web 服务:Web 服务核心功能有哪些,如何实现?
该思维导图由 AI 生成,仅供参考
Web 服务的核心功能
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了Web服务的核心功能以及Gin框架的特性和优势。作者首先介绍了Web服务的基础功能和高级功能,包括通信协议和通信格式的选择、路由匹配、API接口版本管理、多服务支持、参数解析、中间件特性、认证、RequestID、跨域请求处理等。随后,作者选择了Gin框架作为实现这些功能的工具,并详细介绍了Gin框架的特性和优势。Gin框架支持多种HTTP方法、不同位置的HTTP参数、路由和路由分组、middleware和自定义middleware、自定义Log、binding和validation、重定向、basic auth middleware等功能。通过选择Gin框架,作者强调了其轻量级、高性能、功能齐全、使用简单等特点。文章内容涵盖了HTTP/HTTPS支持、JSON数据格式支持、路由匹配、路由分组、一进程多服务、参数解析、参数校验、逻辑处理、返回结果等内容,为读者提供了全面的技术指导。文章中还提供了示例代码和详细的操作步骤,帮助读者更好地理解和应用所学知识。文章还介绍了Gin框架的中间件特性,包括中间件的加载方法、自定义中间件的实现以及一些常用的中间件。此外,文章还探讨了优雅关停HTTP服务的方法。总的来说,本文为读者提供了快速了解Web服务开发的概览和实现方式,以及Gin框架的特性和优势,对于想要深入了解Web服务开发的读者具有很高的参考价值。
《Go 语言项目开发实战》,新⼈⾸单¥68
全部留言(16)
- 最新
- 精选
- jxlwqqsignal.Notify 需要使用 buffered channel 哦 ```go c := make(chan os.Signal, 1) ``` 参考:https://blog.wu-boy.com/2021/03/why-use-buffered-channel-in-signal-notify/
作者回复: 感谢反馈,已更新
2021-09-025 - 授人以🐟,不如授人以渔老师,没有理解编码实现优雅关闭服务的程序。这段程序和我们期望的:【期望 HTTP 服务可以在处理完所有请求后,正常地关闭这些连接,也就是优雅地关闭服务】有什么关系?
作者回复: 有关系的,通过<-quit阻塞程序继续执行,当收到关停信号时,会停止阻塞,执行后面的srv.Shutdown代码,srv.Shutdown可以优雅关停HTTP服务。
2021-09-0824 - 🌀🐑hfy🐣请问老师觉得go-zero怎样?值得学习吗?
作者回复: 目前少有的优秀微服务框架,我觉得值得一学
2022-09-22归属地:广东3 - NeroldyGet handler函数用Rlock会不会更合适?因为好像只有对product的读操作而没有写操作。
作者回复: 是的,RLock更好
2021-07-263 - tajizhijia在goroute里log.Fatal()之后程序不就推出了么?
作者回复: 对,就直接退出了。如果一个err属于Fatal级别,说明这种错误系统已经不能继续工作了,可以直接退出的。
2022-08-26归属地:广东21 - wei 丶老师想问下server.key这个用cfssl怎么生成呀? 我往回翻了下只看到了cfssl生成的 .pem 证书文件 🙈
作者回复: cfssl gencert -initca ca-csr.json | cfssljson -bare ca 这个命令生成的ca-key.pem其实就是server.key了
2021-09-2421 - LosinGripcurl -XGET http://127.0.0.1:8080/v1/products/iphone12 获取如下 Client sent an HTTP request to an HTTPS server. 什么原因
作者回复: 确认下你代码中:insecureServer.Addr是否是8080。
2021-09-181 - Bynowc.JSON(http.StatusNotFound, gin.H{"error": fmt.Errorf("can not found product %s", c.Param("name"))}) 这行代码是错误的,应该是Sprintf
作者回复: type H map[string]interface{} 可以是error类型
2022-05-31归属地:广东 - 平常心如何用 curl 来访问 https的 服务呢? ca.pem 放到本机的证书库里,运行了一下,还是跑不通 https的服务呢。
作者回复: 有报什么错吗
2021-12-19 - 授人以🐟,不如授人以渔「表单参数 form」是否可以和「请求消息体参数 body」合并在一起,因为后者是包含前者的。其请求内容都是在请求体部分,而且格式有多种,比如 application/json、application/xml、text/plain,再比如就是 application/form。
作者回复: 还是不能的哈。因为表单和Body本就是不同的参数
2021-10-16