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添加字段的主要内容,如果未能解决你的问题,请参考以下文章

Go实现RESTful_API添加字段

Go实现RESTful_API添加字段

Go实现RESTful_API

Go实现RESTful_API

Go实现RESTful_API

Go实现RESTful_API