一个简易的 Server

自己写一个 Web 服务器

Node.js 服务器

接收请求(只需要一个文件)。

1.新建一个安全的目录cd ~/Desktop; mkdir && cd node-demo
2.新建一个 server.jstouch server.js

点击查看 server.js 代码
  
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var http = require('http')
var fs = require('fs')
var url = require('url')
var port = process.argv[2]

if(!port){
console.log('请指定端口号!\nnode server.js 8888 这样不会吗?')
process.exit(1)
}

var server = http.createServer(function(request, response){
var parsedUrl = url.parse(request.url, true)
var path = request.url
var query = ''
if(path.indexOf('?') >= 0){ query = path.substring(path.indexOf('?')) }
var pathNoQuery = parsedUrl.pathname
var queryObject = parsedUrl.query
var method = request.method

/******** 从这里开始看,上面不要看 ************/


console.log('得到 HTTP 路径\n' + path)
console.log('查询字符串为\n' + query)
console.log('不含查询字符串的路径为\n' + pathNoQuery)


/******** 代码结束,下面不要看 ************/
})

server.listen(port)
console.log('监听 ' + port + ' 成功\n请用在空中转体720度然后用电饭煲打开 http://localhost:' + port)


3.运行node server.js看到报错,根据报错添加 端口号
4.成功之后,这个 server 会保持运行。如果你想中断这个 server,按Ctrl c即可。
5.新开一个 Bash 窗口,发出 HTTP 响应,curl http://localhost:你指定的端口/xxx马上可以看到 server 打印出了路径。
server打印出路径
6.这说明 server 收到了 curl 发出的请求。

现在让 server 发出响应

1.编辑 server.js,添加如下代码

1
2
3
4
5
console.log('得到 HTTP 路径\n' + path)
console.log('查询字符串为\n' + query)
console.log('不含查询字符串的路径为\n' + pathNoQuery)
response.write('Hi')
response.end()

2.中断之前的 server,重新运行 node server 8888
3.curl http://localhost:8888/xxx,结果如下:
Hi%
4.好了,响应添加成功。
5.使用 curl -s -v -- "http://localhost:8888/xxx",可以查看完整的请求和响应。
查看请求和响应
6.或者不操作 第5步,用网页打开curl http://localhost:8888/xxx

点击查看 server.js 代码
  
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var http = require('http')
var fs = require('fs')
var url = require('url')
var port = process.argv[2]

if(!port){
console.log('请指定端口号!\nnode server.js 8888 这样不会吗?')
process.exit(1)
}

var server = http.createServer(function(request, response){
var parsedUrl = url.parse(request.url, true)
var path = request.url
var query = ''
if(path.indexOf('?') >= 0){ query = path.substring(path.indexOf('?')) }
var pathNoQuery = parsedUrl.pathname
var queryObject = parsedUrl.query
var method = request.method

/******** 从这里开始看,上面不要看 ************/


console.log('得到 HTTP 路径\n' + path)
if(path == '/'){
response.write('Hi\n')
response.end()
}else if(path == '/index'){
response.setHeader('Content-Type','text/html; charset=utf8') //设置网页的编码格式 html,utf8
response.write('<!DOCTYPE>\n<html><head></head><body><h1>你好</h1><h1>Hello Node.js</h1></body></html>')
response.end()
}else{
response.statusCode = 404
response.end()
}
console.log('查询字符串为\n' + query)
console.log('不含查询字符串的路径为\n' + pathNoQuery)


/******** 代码结束,下面不要看 ************/
})

server.listen(port)
console.log('监听 ' + port + ' 成功\n请用在空中转体720度然后用电饭煲打开 http://localhost:' + port)