区块链学习(四)http server

如何让你的区块链暴露到万维网

允许外部访问

package main

import (
   "../core"
   "encoding/json"
   "io"
   "net/http"
)

var blockchain *core.Blockchain

func run() {
   // 对外暴露端口
   http.HandleFunc("/blockchain/get", blockchainGetHandler)
   http.HandleFunc("/blockchain/write", blockchainWriteHandler)
   // 监听端口8888
   http.ListenAndServe("localhost:8080", nil)
}

// 读数据
func blockchainGetHandler(w http.ResponseWriter, r *http.Request) {
   bytes, error := json.Marshal(blockchain)
   if error != nil {
      http.Error(w, error.Error(), http.StatusInternalServerError)
      return
   }
   // 返回json 字节
   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)
}

func main() {
   blockchain = core.NewBlockchain()
   run()
}

猜你喜欢

转载自blog.csdn.net/qq_34874784/article/details/89811707