第一章--Go與web應用

Go語言構建web應用的特性

  • 可擴展
  • 可維護
  • 模塊化
  • 高性能

HTTP簡介

HTTP是一種無狀態、由文本構成的請求-響應(request-response)協議,這種協議使用的是客戶端-服務器(client-server)計算模型

CGI

通用網管接口(Common Gateway Interface),允許web服務器與一個獨立運行於web服務器進程之外的進程對接

SSI

服務器端包含(server-side includes),允許開發者在HTML文件裏包含一些指令,衍生出了JSP(Java Server Pages),ASP(Active Server Pages)等Web模板引擎

http請求

  • 請求行(request-line)
  • 零個或任意多個請求首部(header)
  • 一個空行
  • 可選的報文主體(body)

請求方法

  • GET
  • POST
  • HEAD
  • PUT
  • DELETE
  • TRACE
  • OPTIONS
  • CONNECT
  • PATCH

http響應

  • 一個狀態行
  • 零個或任意數量的響應首部
  • 一個空行
  • 一個可選的報文主體

響應狀態碼

  • 1XX 情報狀態碼
  • 2XX 成功狀態碼
  • 3XX 重定向狀態碼
  • 4XX 客戶端錯誤狀態碼
  • 5XX 服務器錯誤狀態碼

響應首部

  • Allow
  • Content-Length
  • Content-Type
  • Date
  • Location
  • Server
  • Set-Cookie
  • WWW-Authenticate

URI

統一資源標識符(Uniform Resource Identifier),在Tim Berners-Lee在1994年發表的RFC 1630中定義了這個概念,還包括統一資源名稱(Uniform Resource Name)和統一資源定位符(Uniform Resource Location),URI是一個涵蓋性術語,包含了URN和URL,URI一般格式爲:

<方案名稱>:<分層部分>[ ? <查詢參數>] [ # <片段>]

因每個URL都是一個單獨的字符串,所以URL裏不能包含空格,?和#這些符號也不能做其它用途,我們需要用URL編碼(百分號編碼)對這些字符進行轉換,做法是將該字符在ASCII碼中的字節值轉換爲16進制,並在前面加上%,例如空格就被轉換爲%20。

處理器

Web應用中的處理器出了要接收和處理客戶端發來的請求,還需要調用模板引擎,然後由模板引擎生成HTML並把數據填充至將要回傳給客戶端的響應報文中

模板引擎(template engine)

  • 靜態模板
  • 動態模板

Hello Go

本地運行hello, world!

package main

import (
    "fmt"
    "net/http"
)

func handler(writer http.ResponseWriter, request *http.Request) {
    fmt.Fprintf(writer, "Hello World %s", request.URL.Path[1:])
}

func main()  {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章