这一篇博客是对着上一篇博客的补充:基本的代码框架也是根据上一篇代码改的,具体看我上一篇博客:Gin+getway+Fabric2.4.4演示(一)从账本读数据_keep_top的博客-CSDN博客
这是Init部分代码:
gin部分:
r := gin.Default()
r1 := r.Group("/fabric2.4.2")
r1.POST("/Init", func(c *gin.Context) {
initLedger(contract)
c.JSON(200, "init ok!")
})
Gateway的Init部分
func initLedger(contract *client.Contract) {
fmt.Printf("Submit Transaction: InitLedger, function creates the initial set of assets on the ledger \n")
_, err := contract.SubmitTransaction("InitLedger")
if err != nil {
panic(fmt.Errorf("failed to submit transaction: %w", err))
}
fmt.Printf("*** Transaction committed successfully\n")
}
下面是创建新Asset写入账本的部分:
gin部分:
r1.POST("/CreateAsset", func(c *gin.Context) {
var asset Asset
c.ShouldBind(&asset)
c.JSON(200, asset)
marshal, _ := json.Marshal(asset)
CreateAsset(contract, asset)
fmt.Println("存入成功!存入的数据是:", string(marshal))
//fmt.Println("asset:", asset)
})
函数部分:
func CreateAsset(contract *client.Contract, asset Asset) string {
evaluateResult, err := contract.SubmitTransaction("CreateAsset", asset.ID, asset.Color, strconv.Itoa(asset.Size), asset.Owner, strconv.Itoa(asset.AppraisedValue))
if err != nil {
panic(fmt.Errorf("failed to evaluate transaction: %w", err))
}
result := formatJSON(evaluateResult)
fmt.Printf("*** Result:%s\n", result)
return string(evaluateResult)
}
打开postman测试:
init测试:
进行查询:
再进行创建Asset测试:
输入属性的值:
我们再进行查询:
显示我们已经存入账本成功了!
也可以查看couchdb:
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。
目前在很多使用Golang的中小型公司中进行业务开发,使用Gin框架的很多