第 10 课:HTTP 网络编程(服务端)

1. 阅读 Node.js API 资料

2. 解析 HTTP 方法

要求:

  • 创建文件夹 17-http-server
  • 编写脚本代码 01-method-parse.js
  • 使用 http 模块创建 web 服务监听 8080 端口
  • 解析 HTTP 请求的方法
  • 使用 switch case 语句
  • 至少解析 GET、POST、PUT 和 DELETE 四个 HTTP 方法
  • 需要在 web 服务器程序中打印 HTTP 请求的方法名称
  • 需要给客户端反馈信息
  • 用 curl -X 参数测试各种 HTTP 请求方法

3. 解析 URL

要求:

  • 编写脚本代码 02-url-parse.js
  • 解析给定的 url 地址:http://wangding:123@www.baidu.com:8080/a/b/c?age=20&gender=M#/d/e/f
  • 在控制台打印解析的结果
  • 使用 http 模块,创建 web 服务监听 8080 端口
  • 对 HTTP 请求的 URL 地址进行解析
  • 在控制台打印解析的结果
  • curl http://localhost:8080/a/b/c?age=20&gender=M#/d/e/f 命令测试上面的服务程序
  • 思考为什么没有解析出 hash: #/d/e/f

4. 解析 HTTP 请求头

要求:

  • 编写脚本代码 03-req-header-parse.js
  • 使用 http 模块创建 web 服务监听 8080 端口
  • 在控制台打印完整的 HTTP 请求起始行和请求头信息
  • 在控制台打印 HTTP 请求头信息中的 User-Agent、Host 和 Content-Type 三个字段信息
  • 在 curl 程序中向 web 服务发送特定的头部字段信息 Content-Type:appliction/json,测试服务程序
  • curl -H "Content-Type:appliction/json" http://localhost:8080
  • 解析 HTTP 协议的基本身份验证请求头字段:authorization,将用户名和密码信息打印在控制台
  • 用命令 curl http://wangding:123@localhost:8080 测试服务程序

5. 处理 HTTP 响应

要求:

  • 编写脚本代码 04-response.js
  • 使用 http 模块创建 web 服务监听 8080 端口
  • 当客户端请求网站根路径(/)时,发送给客户端一个 h1 格式的 hello world! 网页
  • 并且发送响应状态码 200
  • 并且发送响应头字段列表:Content-Type: text/html 以及 Content-Length: XXX
  • Content-Length 中的三个 X 表示响应体的实际字节数
  • 当客户端请求网站其他路径时,发送状态码 404,以及 Resource not found!信息
  • 用 curl 程序测试这个 web 服务的不同 URL,查看响应起始行、响应报文头以及响应体

6. 处理上传数据

要求:

  • 编写脚本代码 05-upload.js
  • 使用 http 模块创建 web 服务监听 8080 端口
  • 请求的 URL 不是网站根路径(/)时,提示客户端 404 错误
  • 如果 HTTP 请求的方法不是 POST 时,提示客户端 404 错误
  • 接收客户端 HTTP POST 请求中携带的数据
  • 将收到的数据打印到控制台上
  • 用 curl 程序测试服务程序,包括以下一些场景
  • 用 curl 向服务程序发送 FORM 表单数据
  • 用 curl 向服务程序发送 JSON 数据
  • 用 curl 向服务程序上传文件

7. 处理 GET 请求的 FORM 表单

要求:

  • 编写脚本代码 06-form-get.js
  • 使用 http 模块创建 web 服务监听 8080 端口
  • 当 HTTP 请求的 URL 不是网站根路径(/)时,提示客户端 404 错误
  • 向客户端发送一个 TODO list 表单页面,页面上用户可以填写待办事项
  • 用户点击提交按钮后,表单使用 HTTP 的 GET 方法提交到服务程序
  • 服务程序接收表单数据,并将待办事项放到 TODO list 表单页面,发送给客户端
  • 用 chrome 浏览器测试服务程序
  • 用 curl 测试服务程序
  • TODO list 表单页面样式如下:

    form-get,王顶,node.js,408542507@qq.com
    图:form-get,王顶,node.js,408542507@qq.com

8. 处理 POST 请求的 FORM 表单

要求:

  • 编写脚本代码 07-form-post.js
  • 使用 http 模块创建 web 服务监听 8080 端口
  • 当 HTTP 请求的 URL 不是网站根路径(/)时,提示客户端 404 错误
  • 当收到客户端 HTTP GET 请求时,发送给客户端 TODO list 表单页面
  • 页面上用户可以填写待办事项,用户提交表单使用 POST 方法
  • 用 chrome 浏览器测试服务程序
  • 用 curl 测试服务程序
  • TODO list 页面样式见上面截图

9. 网页 Linux 命令行

要求:

  • 基于 07-form-post.js 代码
  • 编写 08-form-cmd.js 脚本
  • 用户在表单页面上提交 linux 命令
  • 服务程序利用子进程技术执行 linux 命令
  • 服务程序将 linux 命令的运行结果返回到网页上
  • 命令运行结果要求能够正确的换行显示
  • 程序的运行效果,如下图所示:

    form-cmd,王顶,node.js,408542507@qq.com
    图:form-cmd,王顶,node.js,408542507@qq.com

10. 处理文件上传

要求:

  • 编写 09-upload-file.js 脚本
  • 能够接收任意格式文件上传
  • 将上传的文件保存在脚本所在目录
  • 保存在服务器上的文件名和上传的文件名相同
  • 用 crul 命令测试脚本
  • 编写文件上传的 HTML 页面
  • 用浏览器访问上传文件的 HTML 页面,实现文件上传
  • 改进程序,让程序能够同时支持多个文件上传

11. 上传图片

要求:

  • 在 09-upload-file.js 脚本的基础上
  • 编写 10-upload-pic.js 脚本
  • 能够接收任意格式图片文件(png, jpg, gif, bmp)上传
  • 将上传的图片文件保存在脚本所在目录的 images 子目录下
  • 保存在服务器上的图片文件名和上传的文件名相同
  • 页面上能够显示已经上传的所有图片
  • 运行并测试程序

12. 后台模板渲染

要求:

  • 编写 11-form-html.js 脚本
  • 对 07-form-post.js 重构
  • 将 07-form-post.js 脚本中的 HTML 代码,保存在单独的文件中 template.html
  • 将 template.html 中的待办事项数据部分用占位符 % 来代替
  • 11-form-html.js 程序读取 template.html 模板文件
  • 并将占位符 % 替换为具体的待办事项数据
  • 用 chrome 测试服务程序

13. 前后端分离架构的代办事项

13.1. 实现 RESTful API

要求:

  • 阅读理解 RESTful 架构
  • 阅读 RESTful API 设计指南
  • 编写 12-rest-api.js 脚本
  • 使用任务 2 方法解析的框架代码
  • 服务程序要响应 GET、POST、PUT 和 DELETE 四种请求方法
  • 实现对待办事项的增、删、改、查,HTTP 接口规格如下:
    method: GET,    url: /todo,    fun: get all todo items
    method: POST,   url: /todo,    fun: insert todo item
    method: DELETE, url: /todo,    fun: del all todo items
    method: DELETE, url: /todo:id, fun: del todo item by id
    method: PUT,    url: /todo:id, fun: update todo item by id
    
  • 用 curl 测试 RESTful API
  • 客户端请求 url 为网站根路径时,服务程序发送代办事项页面给客户端
  • 所以,服务程序不是纯粹的 HTTP 接口服务

13.2. 实现前端页面

要求:

  • 代办事项页面使用前端脚本,fetch 请求 HTTP 接口
  • 并将获取的待办事项 JSON 数据展示到页面上
  • 阅读 fetch 官方文档
  • 阅读 fetch 用法说明
  • 编写客户端代码使用 RESTful API
  • 在页面上实现查询和增加代办事项的功能
  • 在页面上实现删除和修改代办事项的功能
  • 用 chrome 测试 web 服务程序
  • 程序的运行效果,如下图所示:

    todo-api,王顶,node.js,408542507@qq.com
    图:todo-api,王顶,node.js,408542507@qq.com

2018 -  by 王顶. All rights reserved.本站访客人数  人次

results matching ""

    No results matching ""