问答详情
源自:3-4 创建Http Server

老师你好!你没有给data赋值,使用http://localhost:8888/blockchain/write?data=hello,传入值之后,data为空?

package main

import (
   "net/http"
   "gocode/BlockChain/core"
   "encoding/json"
   "io"
)

var blockchain *core.Blockchain

func run(){
   //获取链上的数据
   http.HandleFunc("/blockchain/get", blockchainGetHandler)
   //写数据到链上
   http.HandleFunc("/blockchain/write", blockchainWriteHandler)
    //启动对端口的监听
    http.ListenAndServe("localhost:8888", nil)
    }

//获取链上的数据
func blockchainGetHandler(w http.ResponseWriter, r *http.Request){
   //转化为json数据格式
   bytes, error := json.Marshal(blockchain)
   //如果erroe不为空
   if error != nil {
      http.Error(w, error.Error(), http.StatusInternalServerError)
      return
   }
   io.WriteString(w, string(bytes))
}

//往区块链上写数据
func blockchainWriteHandler(w http.ResponseWriter, r *http.Request){
   blockData := r.URL.Query().Get("data")
   //发送数据
   blockchain.SendData(blockData)
   //把最新的区块链数据会显给调用者
   blockchainGetHandler(w, r)
}

//启动之后访问: http://localhost:8888/blockchain/get
//添加数据到区块链: http://localhost:8888/blockchain/write?data=hello world
func main() {
   //创建一个blockchain
   blockchain = core.NewBlockchain()
   run()

}

提问者:霜花似雪 2018-08-07 21:27

个回答

  • haoyun666
    2018-08-11 11:25:45
    已采纳

    这里只是没有加校验而已,如果加判断data没有值就会返回错误信息