Go实现RESTful_API添加字段
Posted 黑荔枝、
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go实现RESTful_API添加字段相关的知识,希望对你有一定的参考价值。
Go实现RESTful_API添加字段
cd $GOPATH/src/github.com/kongyixueyuan.com/education/service
在domain.go中添加结构体:
type User struct
UserName string `json:"username"`
PassWord string `json:"password"`
Age string `json:"age"`
Phone string `json:"phone"`
Email string `json:"email"`
在eduService.go中添加方法:
func (t *ServiceSetup) SaveUser(user User) (string, error)
eventID := "eventAddUser"
reg, notifier := regitserEvent(t.Client, t.ChaincodeID, eventID)
defer t.Client.UnregisterChaincodeEvent(reg)
// 将edu对象序列化成为字节数组
b, err := json.Marshal(user)
if err != nil
return "", fmt.Errorf("指定的edu对象序列化时发生错误")
req := channel.RequestChaincodeID: t.ChaincodeID, Fcn: "addUser", Args: [][]byteb, []byte(eventID)
respone, err := t.Client.Execute(req)
if err != nil
return "", err
err = eventResult(notifier, eventID)
if err != nil
return "", err
return string(respone.TransactionID), nil
cd $GOPATH/src/github.com/kongyixueyuan.com/education/chaincode
在eduStruct.go中添加结构体:
type User struct
UserName string `json:"username"`
PassWord string `json:"password"`
Age string `json:"age"`
Phone string `json:"phone"`
Email string `json:"email"`
在eduCC.go中添加方法:
func (t *EducationChaincode) addUser(stub shim.ChaincodeStubInterface, args []string) peer.Response
if len(args) != 2
return shim.Error("给定的参数个数不符合要求")
var user User
err := json.Unmarshal([]byte(args[0]), &user)
if err != nil
return shim.Error("反序列化信息时发生错误")
// 查重: 身份证号码必须唯一na
_, exist := GetEduInfo11(stub, user.UserName)
if exist
return shim.Error("要添加的身份证号码已存在")
_, bl := PutEdu11(stub, user)
if !bl
return shim.Error("保存信息时发生错误")
err = stub.SetEvent(args[1], []byte)
if err != nil
return shim.Error(err.Error())
return shim.Success([]byte("信息添加成功"))
func PutEdu11(stub shim.ChaincodeStubInterface, user User) ([]byte, bool)
//edu.ObjectType = DOC_TYPE
b, err := json.Marshal(user)
if err != nil
return nil, false
// 保存edu状态
err = stub.PutState(user.UserName, b)
if err != nil
return nil, false
return b, true
func GetEduInfo11(stub shim.ChaincodeStubInterface, userName string) (User, bool)
var user User
// 根据身份证号码查询信息状态
b, err := stub.GetState(userName)
if err != nil
return user, false
if b == nil
return user, false
// 对查询到的状态进行反序列化
err = json.Unmarshal(b, &user)
if err != nil
return user, false
// 返回结果
return user, true
以上是关于Go实现RESTful_API添加字段的主要内容,如果未能解决你的问题,请参考以下文章