go-micro examples 中web form 代码学习(web类 网站的微服务架构:micro api + micro web + web service + api service)

news/2024/5/20 5:11:09/文章来源:https://blog.csdn.net/u013862108/article/details/103932024

以下对应 example/web 例子:

main.go 代码如下:

package mainimport ("fmt""log""net/http""github.com/micro/go-micro/web"
)func helloWorldHandler(w http.ResponseWriter, r *http.Request) {fmt.Fprint(w, `<html><body><h1>Hello World</h1></body></html>`)
}func main() {service := web.NewService(web.Name("helloworld"),)service.HandleFunc("/", helloWorldHandler)if err := service.Init(); err != nil {log.Fatal(err)}if err := service.Run(); err != nil {log.Fatal(err)}
}

运行:

2020-01-09 17:52:58.159564 I | Listening on [::]:54815

访问: localhost:54815;

--------------------------------------------

以下对应 example/form 例子:

这个例子, 展示了 如何 使用 web services 和 api services  展示 一个 form 表单,并post 提交;

//有接口有页面,有点像 web 页面应用 ; //当然 api services  是 很通用的。

目录结构,如下:

web/main.go 提供  页面服务

api/proto/api.proto 代码如下:

syntax = "proto3";import "github.com/micro/go-micro/api/proto/api.proto";service Form {//常规 formrpc Submit(go.api.Request) returns (go.api.Response) {};//multipart formrpc Multipart(go.api.Request) returns (go.api.Response) {};
}

bogon:proto zhaozhiliang$  protoc --proto_path=$GOPATH/src:. --micro_out=. --go_out=. api.proto

api/main.go 代码如下:

package mainimport ("bytes""context""fmt"proto "form/api/proto""github.com/micro/go-micro"api "github.com/micro/go-micro/api/proto""log""mime""mime/multipart""strings"
)type Form struct{}func (f *Form) Submit(ctx context.Context, req *api.Request, rsp *api.Response) error {fmt.Println("received Submit Request")rsp.Body = fmt.Sprintf("got your value %+v", req.Post)return nil
}func (f *Form) Multipart(ctx context.Context, req *api.Request, rsp *api.Response) error {fmt.Println("received Multipart Submit Request")ct := strings.Join(req.Header["Content-Type"].Values, ",")mt, p, err := mime.ParseMediaType(ct)if err != nil {return err}if !strings.HasPrefix(mt, "multipart/") {return fmt.Errorf("%v does not contain multipart", mt)}r := multipart.NewReader(bytes.NewReader([]byte(req.Body)), p["boundary"])form, err := r.ReadForm(32 << 20)if err != nil {return err}rsp.Body = fmt.Sprintf("got your values %+v", form)return nil
}func main() {service := micro.NewService(micro.Name("go.micro.api.form"),)service.Init()proto.RegisterFormHandler(service.Server(), new(Form))if err := service.Run(); err != nil {log.Fatal(err)}
}

web/main.go 代码如下:

package mainimport ("fmt""github.com/micro/go-micro/web""log""net/http"
)func index(w http.ResponseWriter, r *http.Request) {log.Println("received a web service!")fmt.Fprint(w, `<html>
<body>
<h1>This is a regular form</h1>
<form action="http://192.168.1.129:8080/form/submit" method="POST">
<input type="text" id="thing" name="thing" />
<button>submit</button>
</form>
<h1>This is a multipart form</h1>
<form action="http://192.168.1.129:8080/form/multipart" method="POST" enctype="multipart/form-data">
<input type="text" id="thing" name="thing" />
<button>submit</button>
</form>
</body>
</html>
`)
}func main() {service := web.NewService(web.Name("go.micro.web.form"),)service.Init()service.HandleFunc("/", index)service.Run()
}

运行:

运行 api  网关 ,handler=api

micro api --handler=api

[root@liang form]# micro api --handler=api
2020-01-10 19:00:09.026984 I | [api] Registering API Request Handler at /
2020-01-10 19:00:09.030256 I | [api] HTTP API Listening on [::]:8080
2020-01-10 19:00:09.030538 I | [api] Transport [http] Listening on [::]:16917
2020-01-10 19:00:09.030740 I | [api] Broker [http] Connected to [::]:33890
2020-01-10 19:00:09.035881 I | [api] Registry [mdns] Registering node: go.micro.api-3123f62e-53d7-4069-ba4d-f1b2c95b8c10[root@liang mnt]# micro list services
go.micro.api
go.micro.http.broker
[root@liang mnt]# 

运行 micro web  

[root@liang ~]# micro web
2020-01-10 19:02:32.852125 I | [web] HTTP API Listening on [::]:8082
2020-01-10 19:02:32.852256 I | [web] Transport [http] Listening on [::]:2482
2020-01-10 19:02:32.852356 I | [web] Broker [http] Connected to [::]:56416
2020-01-10 19:02:32.852632 I | [web] Registry [mdns] Registering node: go.micro.web-4a62f24f-b081-4dda-a99f-dee47a3e69bd[root@liang mnt]# micro list services
go.micro.api
go.micro.http.broker
go.micro.web
[root@liang mnt]# 

运行 api service  /   api/main.go

[root@liang form]# go run api/main.go
2020-01-10 19:04:53.965230 I | Transport [http] Listening on [::]:13042
2020-01-10 19:04:53.965342 I | Broker [http] Connected to [::]:59072
2020-01-10 19:04:53.966033 I | Registry [mdns] Registering node: go.micro.api.form-43924b09-31ff-487e-a8f3-e052d4ff7734[root@liang mnt]# micro list services
go.micro.api
go.micro.api.form
go.micro.http.broker
go.micro.web
[root@liang mnt]# 

运行 web service / web/main.go

[root@liang form]# go run web/main.go
2020-01-10 19:05:53.742502 I | Listening on [::]:55204[root@liang mnt]# micro list services
go.micro.api
go.micro.api.form
go.micro.http.broker
go.micro.web
go.micro.web.form
[root@liang mnt]# 

浏览器访问:

http://192.168.1.129:8082/form

架构图:

go.mod 文件如下:

module formgo 1.13require github.com/micro/go-micro v1.18.0 // indirect

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_781842.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css网页favicon_设置网站图标(favicon)

每个网站都有自己的图标(favicon)&#xff0c;除了便于识别与书签收藏&#xff0c;也是一个厂牌吧。浏览器可以将favicon显示于浏览器的地址栏中&#xff0c;也可置于书签列表的网站名前&#xff0c;还可以放在标签式浏览界面中的页标题前。但是我们自己的网站&#xff0c;例如…

百度统计ajax,web网站统计工具之“百度统计”

百度统计是什么&#xff1f;百度统计是百度推出的一款免费的专业网站流量分析工具&#xff0c;能够告诉用户访客是如何找到并浏览用户的网站&#xff0c;在网站上做了些什么&#xff0c;有了这些信息&#xff0c;可以帮助用户改善访客在用户的网站上的使用体验。百度统计有什么…

修改网站首页批处理_天门关键词优化_推荐实用的关键词拓展工具弥补网站排名少的缺憾...

发布时间:2020-11-15 21:11:31SEO优化师将工作核心放在高质量的内容建设&#xff0c;为网站创建更多的信息内容&#xff0c;但是网站关键词排名仍然是少数。有哪些方法或者工作可以拓展关键词呢&#xff1f;接下来&#xff0c;优帮云小编将为您介绍关键词扩展工具和方法&#x…

先用knn对数据集进行预处理再利用神经网络对数据集进行分类_网站数据分析— 常用商品运营分析模型分享...

点击上方蓝色字关注我们~来源&#xff1a;掘金本节将介绍几个常用的商品分析模型&#xff0c;包括商品价格敏感度模型、新产品市场定位模型、销售预测模型、商品关联销售模型、异常订单检测模型、商品规划的最优组合。1商品价格敏感度模型商品价格敏感度模型是指通过研究找到用…

景安vps网站上传后前台能打开后台不能打开_一次某系统的后台拿shell过程

0x01 前言这个后台是一个表哥给我的&#xff0c;然后作为菜鸡的我去试着弄了一下&#xff0c;搞下了&#xff0c;就分享一下思路&#xff0c;文章很菜&#xff0c;希望各位大表哥手下留情&#xff0c;别喷~(菜鸡第一次在春秋写文章....)0x02 测试开始首先&#xff0c;后台界面是…

网站访问量怎么刷_基于爬虫刷新某网站访问量!我说怎么上千万呢!

前言&#xff1a;前一段时间看到有博友写了爬虫去刷新博客访问量一篇文章&#xff0c;当时还觉得蛮有意思的&#xff0c;就保存了一下&#xff0c;但是当我昨天准备复现的时候居然发现文章404了。所以本篇文章仅供学习交流&#xff0c;严禁用于商业用途当我在写文章的同时&…

html图片预加载 博客,网站预加载JS脚本 instant.page

本篇文章介绍了一个网站预加载的脚本 instant.page作用是可以预加载用户想访问的页面&#xff0c;当用户真正点击链接后&#xff0c;就会直接从缓存中读取&#xff0c;以此提升网站的访问速度。原理介绍及作用在逛夏目友人帐的网站时无意间看到这样一个脚本&#xff0c;号称可以…

php动态刷新div_网站SEO优化动态URL与静态URL

网站的URL被分为动态和静态两种&#xff0c;因为程序语句不同&#xff0c;动态的URL也分为三种&#xff0c;第一种是ASP&#xff0c;第二种是PHP&#xff0c;第三种是JSP。静态的URL却只有一种&#xff0c;那就是.html。所以&#xff0c;我们经常通过网址来查看该网站是动态还是…

网站开发需要哪些技术_开发网站需要什么软件及技术?

网站大家都非常熟悉&#xff0c;但是网站是怎么做出来的&#xff1f;需要用什么软件&#xff1f;都有哪些步骤&#xff1f;很多人就不清楚了&#xff01;网站制作的时候&#xff0c;需要分析网站需求、确定网站主题、规划网站页面等等&#xff0c;需要确定好网站整体风格&#…

php css加权重,新站如何提高网站权重

新站提高网站权重的方法&#xff1a;1、增加高质量外链&#xff1b;2、提高原创文章的质量&#xff1b;3、在权重较高的网站发布外链&#xff1b;4、降低导出链接&#xff1b;5、将首页的权重引导至比较重要的页面。新网站如果没有权重的话就会很难获得排名&#xff0c;那么新站…

网站页面加载性能测试工具

网站页面加载性能测试工具 1、Yahoo&#xff1a;Yslow&#xff08;为什么慢&#xff1f;&#xff09; 门户网站页面加载性能测试工具---YSLOW 【转自】http://www.blogjava.net/lijun_li/archive/2009/06/21/283458.html 目前我知道的用于测试B/S结构&#xff0c;页面加载性能…

优化网站性能 提高网站速度访问速度的14条实践

优化网站性能 提高网站速度访问速度的14条实践 http://hi.baidu.com/lxll2009/blog/item/9e040d50d6c3c5828d54304e.html 第一条、尽可能的减少 HTTP 的请求数 &#xff08;Make Fewer HTTP Requests &#xff09; http请求是要开销的&#xff0c;想办法减少请求数自然可以提高…

PHP虚拟主机放置多个站点,三种方法实现一个虚拟主机【网站空间】放多个网站...

有些朋友为了省钱需要在一个云虚拟主机上安装多个网站&#xff0c;所以在空间上绑定了好几个域名&#xff0c;但是访问到的却是相同的内容&#xff0c;怎么样让不同的域名访问不同的内容呢&#xff1f;[虚拟主机本身支持子目录绑定域名的不在讨论之列]方法一&#xff1a;(这种方…

Silverlight应用的SEO优化

译文&#xff0c;来源&#xff1a;http://blogs.msdn.com/waldred/archive/2009/03/23/Search-Engine-Optimization-for-Silverlight-Applications.aspx 点击下载源码 简介 对于你来说创建下一代的富应用&#xff0c;使用有无数的理由。但是有一个缺点就是使用呈现的内容无法被…

Asp.Net 网站优化 数据库优化措施 使用主从库(上)

网站规模到了一定程度之后&#xff0c;该分的也分了&#xff0c;该优化的也做了优化&#xff0c;但是还是不能满足业务上对性能的要求&#xff1b;这时候我们可以考虑使用主从库。 主从库是两台服务器上的两个数据库&#xff0c;主库以最快的速度做增删改操作最新数据的查询操作…

10款精选的用于构建良好易用性网站的jQuery插件

这篇随笔收集了10款非常给力的jquery 插件&#xff0c;帮助你构建易用性良好的网站&#xff0c;希望对你有用&#xff01; Embedded help system 看过该插件demo后&#xff0c;感叹道&#xff0c;真是太棒了&#xff01; 点demo里的How to下面的几个链接看看效果:) Embedded …

网站导航颜色停留_专业的网站设计的技巧有哪些?

当我们打开网站时给我们印象最深刻的就是网站的页面设计&#xff0c;有的网站设计的十分大气&#xff0c;有的网页设计的眼花缭乱的&#xff0c;一样都是网页&#xff0c;但给用户带来视觉体验效果是完全不一样的&#xff0c;一个具备新意的网站设计可以带来与众不同的感觉&…

简单的物流管理网站制作源码_物流网站制作需要注意些什么?

现在的物流公司越来越多&#xff0c;而物流公司的网站制作也使得很多物流公司找到了很好的合作伙伴&#xff0c;并且还特别快速的捕捉到了商机&#xff0c;捷路科技网站建设服务商认为物流网站的制作成为物流公司便捷交易的一种手段&#xff0c;更是物流公司发展的必备&#xf…

分享道,可以包含分享几乎所有的网站的按钮

2019独角兽企业重金招聘Python工程师标准>>> 分享道&#xff0c;可以包含分享几乎所有的网站的按钮 这里记录一下&#xff0c;网址为http://www.shareto.com.cn/getcode.html 转载于:https://my.oschina.net/zhangdapeng89/blog/38062

网站分析度量

网站分析度量 今天的话题回到度量&#xff0c;因为度量是网站分析的骨骼&#xff0c;所谓皮之不存毛将焉附&#xff0c;没有度量&#xff0c;网站分析就成为不了一门科学。度量也是最多朋友们问起的问题&#xff0c;例如下面这个问题&#xff1a; 宋星老师&#xff1a; 有个困惑…