http

const http = require('http')

// 创建服务器
const server = http.createServer() // 绑定事件,监听客户端的请求
server.on('request', (req, res) => {
// 写入响应头,防止中文乱码
res.writeHeader(200, {
'Content-Type': 'text/html; charset=utf-8'
})
res.end('你好 http 服务器!')
}) server.listen(3333, () => {
console.log('http server running at http://127.0.0.1:3333')
})

express

const express = require('express')

// 创建服务器
const app = express() // 监听客户端的请求
// 只有客户端的请求类型是 get,并且 请求地址是 / 根路径的时候,
// 才会调用 后面指定的处理函数
app.get('/', (req, res) => {
// express 中,封装了更好用的 res.send 方法
res.send('你好,express 服务器!')
}) // 监听客户端的post请求,并且请求的地址是 /adduser 的时候,
// 才会调用后面指定的处理函数
app.post('/adduser', (req, res) => {
res.send('服务器处理成功!')
}) // 启动服务器
app.listen(4444, () => {
console.log('express server running at http://127.0.0.1:4444')
})

在express框架中获取客户端提交的表单数据

const express = require('express')
const qs = require('querystring') const app = express() // 监听客户端的 post 请求,且请求地址为 /adduser 的时候,会调用指定的处理函数
app.post('/adduser', (req, res) => {
// 注意:客户端提交到服务器的数据,都保存到了 req 请求对象中
// 只要客户端向服务器通过post方式,提交了表单,那么 就会触发 req 的 data 事件
// 只要安装一个 第三方的npm包,名字叫做 body-parser, 并进行简单配置,就能够直接使用 req.body获取到表单数据了
let str = ''
req.on('data', chunk => {
// 把每次得到的分片数据,拼接到 str 字符串中
// 如果 字符串 和 Buffer 数据进行拼接,得到结果,是字符串
str += chunk
// 思考:只要触发了 data,就证明有数据发送到服务器了,但是,什么时候,就证明数据已经发送和接收完毕了呢???
}) // 通过监听 req 的 end 事件,就能够直到数据已经发送完毕了,服务器也已经接收到了完整的数据!
req.on('end', () => {
// console.log(str)
// 对数据进行 URL 解码操作
// const strDecode = decodeURI(str)
// console.log(strDecode)
const result = qs.parse(str)
// 使用 express 的 send 方法,向客户端发送 对象
res.send(result)
}) // res.send('添加用户成功!')
}) app.listen(4444, () => {
console.log('express server running at http://127.0.0.1:4444')
})

使用body-parser包解析表单数据

安包:npm install body-parser -S

const express = require('express')
// 1. 导入 解析表单数据的包
const bodyParser = require('body-parser') const app = express()
// 2. 配置一下
app.use(bodyParser.urlencoded({ extended: false })) app.post('/adduser', (req, res) => {
console.log(req.body)
res.send('ok')
}) app.listen(4444, () => {
console.log('启动成功!')
}) 

nodejs(7)练习 http 和 express 创建简单的服务器的更多相关文章

  1. 【重点突破】——使用Express创建一个web服务器

    一.引言 在自学node.js的过程中有一个非常重要的框架,那就是Express.它是一个基于NodeJs http模块而编写的高层模块,弥补http模块的繁琐和不方便,能够快速开发http服务器.这 ...

  2. Nodejs学习笔记(1) Nodejs安装+借助express模块简单部署服务器

    1 安装 1.1 下载和安装 1.2 什么是REPL?如何使用? 1.3 npm对单一模块的安装和删除功能 1.4 通过package.json自定义模块(安装模块) 1.5 设置全局目录 2 部署网 ...

  3. Nodejs+Express创建HTTPS服务器

    为了使我的Nodejs服务器提供HTTPS服务,学习了一下如何利用express创建https服务器,现记录如下.(一点一点的积累与掌握吧) 1. Http与Https 介绍 HTTP: 超文本传输协 ...

  4. nodejs+express+mongodb简单的例子

    简单的介绍下node+express+mongodb这三个东西.node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比 ...

  5. Nodejs学习笔记(3) 创建服务器:Web 模块(http)与 express 框架

    目录 参考资料 1. 使用 http 模块创建服务器 1.1 实现思路及代码 1.2 HTTP 结构 1.2.1 Request中的重要字段 1.2.2 Response 头信息:文件类型.状态码.连 ...

  6. Express 的基本使用(创建一个简单的服务器)

    Express 的基本使用(创建一个简单的服务器) const express = require('express') // 创建服务器应用程序 // 相当于 http.creatServer co ...

  7. nodejs创建一个HTTP服务器 简单入门级

    const http = require('http');//请求http.createServer(function(request, response){    /*createServer该函数 ...

  8. 前端用Webpact打包React后端Node+Express实现简单留言版

    前言 React官方推荐用Browserify或者Webpack 来开发React组件. Webpack 是什么?是德国开发者 Tobias Koppers 开发的模块加载器.Instagram 工程 ...

  9. 用nodejs搭建一个简单的服务器

    使用nodejs搭建一个简单的服务器 nodejs优点:性能高(读写文件) 数据操作能力强 官网:www.nodejs.org 验证是否安装成功:cmd命令行中输入node -v 如果显示版本号表示安 ...

随机推荐

  1. 7.1 Varnish VCL

    根据以上的配置增加集群,修改default.vcl # This ) # man page for details on VCL syntax and semantics. # # Default b ...

  2. setTimeout的异步

    http://www.cnblogs.com/littledu/articles/2607211.html http://www.cnblogs.com/rubylouvre/archive/2009 ...

  3. Phoenix5.0的部署

    官网下载编译好的二进制包 http://phoenix.apache.org/download.html2 上传并解压到指定目录, 再修改目录名称 tar -zxvf apache-phoenix-5 ...

  4. tornado结合前端进行文件上传

    在表单中我们获取用户提交的数据,使用的是get_argument,复选框使用的是get_arguments,但是文件的不一样,文件的使用request.files. form文件上传 html代码: ...

  5. 安卓Recycleview简单的网格布局-初学者的关键点

    导包 def supportVersion = '28.0.0' 定义常量我的sdk版本为28 implementation "com.android.support:recyclervie ...

  6. Django(六)实战2:向数据库添加,删除数据、重定向写法、重定向简写

    一.向数据库添加图书数据 [上接]https://blog.csdn.net/u010132177/article/details/103831173 1)首先开启mysql服务,并运行项目 启动my ...

  7. PATH环境 变量

    PATH环境 变量 $HOME/.bash_profile和/etc/profile 两个文件在登陆用户的时候会执行, /etc/profile 所有用户都执行,$HOME/.bash_profile ...

  8. 147-PHP strip_tags函数,剥去字符串中的 HTML 标签(一)

    <?php $html=<<<HTM <title>PHP输出HTML代码</title> <body> <a href=#>转 ...

  9. idea自定义快捷鍵

    一  生成方法注释 1. File -> Settings... 2. Editor -> Live Templates,点击最右边的+ 3. 依自己情况选择,我这里选择的 Live Te ...

  10. 【剑指Offer】面试题52. 两个链表的第一个公共节点

    题目 输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB ...