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.Request{ChaincodeID: t.ChaincodeID, Fcn: "addUser", Args: [][]byte{b, []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添加字段的主要内容,如果未能解决你的问题,请参考以下文章