Skip to content

Commit 3fa6bd6

Browse files
authored
Merge pull request astaxie#856 from vCaesar/u18-pr
Format and remove zh/x.md spaces
2 parents b3b6027 + 88f1566 commit 3fa6bd6

29 files changed

+2492
-2493
lines changed

zh/08.1.md

Lines changed: 233 additions & 233 deletions
Large diffs are not rendered by default.

zh/08.2.md

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -47,46 +47,46 @@ WebSocket分为客户端和服务端,接下来我们将实现一个简单的
4747

4848
```html
4949

50-
<html>
51-
<head></head>
52-
<body>
53-
<script type="text/javascript">
54-
var sock = null;
55-
var wsuri = "ws://127.0.0.1:1234";
56-
57-
window.onload = function() {
58-
59-
console.log("onload");
60-
61-
sock = new WebSocket(wsuri);
62-
63-
sock.onopen = function() {
64-
console.log("connected to " + wsuri);
65-
}
66-
67-
sock.onclose = function(e) {
68-
console.log("connection closed (" + e.code + ")");
69-
}
70-
71-
sock.onmessage = function(e) {
72-
console.log("message received: " + e.data);
73-
}
74-
};
75-
76-
function send() {
77-
var msg = document.getElementById('message').value;
78-
sock.send(msg);
79-
};
80-
</script>
81-
<h1>WebSocket Echo Test</h1>
82-
<form>
83-
<p>
84-
Message: <input id="message" type="text" value="Hello, world!">
85-
</p>
86-
</form>
87-
<button onclick="send();">Send Message</button>
88-
</body>
89-
</html>
50+
<html>
51+
<head></head>
52+
<body>
53+
<script type="text/javascript">
54+
var sock = null;
55+
var wsuri = "ws://127.0.0.1:1234";
56+
57+
window.onload = function() {
58+
59+
console.log("onload");
60+
61+
sock = new WebSocket(wsuri);
62+
63+
sock.onopen = function() {
64+
console.log("connected to " + wsuri);
65+
}
66+
67+
sock.onclose = function(e) {
68+
console.log("connection closed (" + e.code + ")");
69+
}
70+
71+
sock.onmessage = function(e) {
72+
console.log("message received: " + e.data);
73+
}
74+
};
75+
76+
function send() {
77+
var msg = document.getElementById('message').value;
78+
sock.send(msg);
79+
};
80+
</script>
81+
<h1>WebSocket Echo Test</h1>
82+
<form>
83+
<p>
84+
Message: <input id="message" type="text" value="Hello, world!">
85+
</p>
86+
</form>
87+
<button onclick="send();">Send Message</button>
88+
</body>
89+
</html>
9090

9191
```
9292
可以看到客户端JS,很容易的就通过WebSocket函数建立了一个与服务器的连接sock,当握手成功后,会触发WebScoket对象的onopen事件,告诉客户端连接已经成功建立。客户端一共绑定了四个事件。
@@ -100,45 +100,45 @@ WebSocket分为客户端和服务端,接下来我们将实现一个简单的
100100

101101
```Go
102102

103-
package main
103+
package main
104104

105-
import (
106-
"golang.org/x/net/websocket"
107-
"fmt"
108-
"log"
109-
"net/http"
110-
)
105+
import (
106+
"golang.org/x/net/websocket"
107+
"fmt"
108+
"log"
109+
"net/http"
110+
)
111111

112-
func Echo(ws *websocket.Conn) {
113-
var err error
112+
func Echo(ws *websocket.Conn) {
113+
var err error
114114

115-
for {
116-
var reply string
115+
for {
116+
var reply string
117117

118-
if err = websocket.Message.Receive(ws, &reply); err != nil {
119-
fmt.Println("Can't receive")
120-
break
121-
}
118+
if err = websocket.Message.Receive(ws, &reply); err != nil {
119+
fmt.Println("Can't receive")
120+
break
121+
}
122122

123-
fmt.Println("Received back from client: " + reply)
123+
fmt.Println("Received back from client: " + reply)
124124

125-
msg := "Received: " + reply
126-
fmt.Println("Sending to client: " + msg)
125+
msg := "Received: " + reply
126+
fmt.Println("Sending to client: " + msg)
127127

128-
if err = websocket.Message.Send(ws, msg); err != nil {
129-
fmt.Println("Can't send")
130-
break
131-
}
128+
if err = websocket.Message.Send(ws, msg); err != nil {
129+
fmt.Println("Can't send")
130+
break
132131
}
133132
}
133+
}
134134

135-
func main() {
136-
http.Handle("/", websocket.Handler(Echo))
135+
func main() {
136+
http.Handle("/", websocket.Handler(Echo))
137137

138-
if err := http.ListenAndServe(":1234", nil); err != nil {
139-
log.Fatal("ListenAndServe:", err)
140-
}
138+
if err := http.ListenAndServe(":1234", nil); err != nil {
139+
log.Fatal("ListenAndServe:", err)
141140
}
141+
}
142142

143143
```
144144
当客户端将用户输入的信息Send之后,服务器端通过Receive接收到了相应信息,然后通过Send发送了应答信息。

zh/08.3.md

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -64,56 +64,56 @@ Go没有为REST提供直接支持,但是因为RESTful是基于HTTP协议实现
6464

6565
```Go
6666

67-
package main
68-
69-
import (
70-
"fmt"
71-
"github.com/julienschmidt/httprouter"
72-
"log"
73-
"net/http"
74-
)
75-
76-
func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
77-
fmt.Fprint(w, "Welcome!\n")
78-
}
79-
80-
func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
81-
fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name"))
82-
}
83-
84-
func getuser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
85-
uid := ps.ByName("uid")
86-
fmt.Fprintf(w, "you are get user %s", uid)
87-
}
88-
89-
func modifyuser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
90-
uid := ps.ByName("uid")
91-
fmt.Fprintf(w, "you are modify user %s", uid)
92-
}
93-
94-
func deleteuser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
95-
uid := ps.ByName("uid")
96-
fmt.Fprintf(w, "you are delete user %s", uid)
97-
}
98-
99-
func adduser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
100-
// uid := r.FormValue("uid")
101-
uid := ps.ByName("uid")
102-
fmt.Fprintf(w, "you are add user %s", uid)
103-
}
104-
105-
func main() {
106-
router := httprouter.New()
107-
router.GET("/", Index)
108-
router.GET("/hello/:name", Hello)
109-
110-
router.GET("/user/:uid", getuser)
111-
router.POST("/adduser/:uid", adduser)
112-
router.DELETE("/deluser/:uid", deleteuser)
113-
router.PUT("/moduser/:uid", modifyuser)
114-
115-
log.Fatal(http.ListenAndServe(":8080", router))
116-
}
67+
package main
68+
69+
import (
70+
"fmt"
71+
"github.com/julienschmidt/httprouter"
72+
"log"
73+
"net/http"
74+
)
75+
76+
func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
77+
fmt.Fprint(w, "Welcome!\n")
78+
}
79+
80+
func Hello(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
81+
fmt.Fprintf(w, "hello, %s!\n", ps.ByName("name"))
82+
}
83+
84+
func getuser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
85+
uid := ps.ByName("uid")
86+
fmt.Fprintf(w, "you are get user %s", uid)
87+
}
88+
89+
func modifyuser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
90+
uid := ps.ByName("uid")
91+
fmt.Fprintf(w, "you are modify user %s", uid)
92+
}
93+
94+
func deleteuser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
95+
uid := ps.ByName("uid")
96+
fmt.Fprintf(w, "you are delete user %s", uid)
97+
}
98+
99+
func adduser(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
100+
// uid := r.FormValue("uid")
101+
uid := ps.ByName("uid")
102+
fmt.Fprintf(w, "you are add user %s", uid)
103+
}
104+
105+
func main() {
106+
router := httprouter.New()
107+
router.GET("/", Index)
108+
router.GET("/hello/:name", Hello)
109+
110+
router.GET("/user/:uid", getuser)
111+
router.POST("/adduser/:uid", adduser)
112+
router.DELETE("/deluser/:uid", deleteuser)
113+
router.PUT("/moduser/:uid", modifyuser)
114+
115+
log.Fatal(http.ListenAndServe(":8080", router))
116+
}
117117

118118
```
119119
上面的代码演示了如何编写一个REST的应用,我们访问的资源是用户,我们通过不同的method来访问不同的函数,这里使用了第三方库`github.com/julienschmidt/httprouter`,在前面章节我们介绍过如何实现自定义的路由器,这个库实现了自定义路由和方便的路由规则映射,通过它,我们可以很方便的实现REST的架构。通过上面的代码可知,REST就是根据不同的method访问同一个资源的时候实现不同的逻辑处理。

0 commit comments

Comments
 (0)