一、简单的node服务器搭建

  1、首先新建一个名为server.js的文件(文件名随意,后缀名必须是.js)

  2、粘贴进文件以下内容

  

//引入http模块
const http = require("http");
//第一种
// //使用http创建服务,传入创建服务的参数
// let server = http.createServer((req,res)=>{
// //req:请求参数 res:响应参数
// //路径
// console.log(req.url);
// //请求方式
// console.log(req.method);
// //写入页面
// res.write("hello");
// //结束响应
// res.end();
// });
// //服务器监听8080端口,这里的端口号可以修改
// server.listen(8080); //第二种
// const server = http.createServer();
// server.on("request",function (req,res) {
// console.log(req.url);
// res.write("hello");
// res.end();
// });
// server.listen(8080); //第三种
http.createServer((req,res)=>{
console.log(req.url);
res.write("hello");
res.end();
}).listen(8080);

  3、右键启动服务器出现下图则说明启动成功

  4、访问http:localhost:8080,出现如下现象,说明服务配置成功

  

二、服务器处理get请求 (req.method = GET)

  1、get请求的路径一般为http://localhost:8080?id=3&name=9

  2、

//用服务器处理get请求
//引入http模块
const http = require("http");
//创建服务
http.createServer((req,res)=>{
//我们的访问路径是:http://localhost:8080/index.html?id=3&name=9
//打印出来的req.url是:/index.html?id=3&name=9
console.log(req.url);
//获取参数对象
//方式一:原生的js来获取(不推荐)
// let url = req.url.split("?")[1]; //id=3&name=9
// let arr = url.split("&");
// console.log(arr);
// let paramArr = [];
// let param = {};
// for (let i = 0; i < arr.length; i++) {
// paramArr = arr[i].split("=");
// param[paramArr[0]] = paramArr[1];
// }
// console.log(param); //方式二:使用querystring模块+原生
// const querystring = require("querystring");
// let dataStr = req.url.split("?")[1]; //id=3&name=9
// console.log(dataStr);
// let dataObj = querystring.parse(dataStr);//把字符串转化为对象
// console.log(dataObj); //方式三:使用url+querystring模块
// const url = require("url");
// const querystring = require("querystring");
// let dataStr = url.parse(req.url).query;//获取的是url对象的query的属性值
// let dataObj = querystring.parse(dataStr);
// console.log(dataObj); //方式四:只使用url模块
const url = require("url");
//直接获取url对象的query为对象的值
let dataObj = url.parse(req.url,true).query;
console.log(dataObj); //结束服务器相应
res.end("此次相应结束");
}).listen(8080);

三、处理POST请求

1、处理post请求的页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>node处理post请求</title>
</head>
<body>
<form action="http://localhost:8080" method="post">
<input type="text" name="name" id="">
<input type="text" name="age" id="">
<input type="submit" value="提交">
</form> </body>
</html>

2、post请求的处理

 //用于处理post请求
const http = require("http");
const server = http.createServer((req,res)=>{
//创建数组用于存储参数
let arr = [];
//开始接受数据参数
req.on("data",(buffer)=>{
arr.push(buffer);
});
//终止接受参数
req.on("end",()=>{
let buffer = Buffer.concat(arr);//获取到的是buffer
let dataStr = buffer.toString(); //name=111&age=2222
const querystring = require("querystring");
let dataObj = querystring.parse(dataStr);
console.log(dataObj); });
res.end();
}).listen(8080);

三、文件处理的fs模块

  1、fs :file system的缩写

  2、

//对于文件进行读取的服务器
const http = require("http");
//加载fs模块
const fs = require("fs");
const server = http.createServer((req,res)=>{
//使用fs进行异步读取文件,路径写的为绝对路径(异步常用)
// fs.readFile("E://x.txt", "utf8",(err, data) => {
// //文件读取时可以添加utf8编码,使其不乱码,或者打印数据时进行utf8编码
// // fs.readFile("E://x.txt", "utf8", (err, data) => {
// if (err) {//如果读取出现错误
// console.log(err);
// } else {
// //获取的数据data需要进行编码,或者文件读取时可以添加utf8编码,使其不乱码
// console.log(data.toString("utf8"));
// }
// });
//把文件写入进去(覆盖的形式),没有的话会自动创建
// fs.writeFile("E://y.txt","abddd",(err)=>{
// if (err) {//出现错误时,报异常
// console.log(err);
// throw err;
// } else {
// console.log("写入成功"); // }
// });
//不覆盖的方式添加,有就加,没有就创建
// fs.writeFile("E://m.txt","data",{flag:"a"},(err)=>{
// if (err) {
// throw err;
// } else {
// console.log("写入成功"); // }
// });
//只是添加,没有就创建
// fs.appendFile("E://yo.txt","我是新来的",(err)=>{
// if (err) {
// throw err;
// } else {
// console.log("追加成功"); // }
// });
//把读取的数据添加进去(异步,在回调函数中写入)
// fs.readFile("E://x.txt","utf8",(err,data)=>{
// if(err){
// throw err;
// }else{
// fs.writeFile("E://bs.txt",data,{flag:"a"},(err)=>{
// if (err) {
// throw err;
// } else {
// console.log("写入成功"); // }
// });
// }
// }); //使用fs同步读取文件,有返回值,用的比较少
let data = fs.readFileSync("E://x.txt","utf8");
fs.writeFileSync("E://tb.txt",data,{flag:"a"},(err)=>{
if (err) {
throw err;
} else {
console.log("写入成功"); }
}); res.end(function () {
console.log("请求结束"); }); }).listen(8080);

  

2、node服务器的更多相关文章

  1. 手把手教你从购买vps到搭建一个node服务器

    要准备什么? 1.5刀 2.最好有FQ软件(可以用蓝灯) let's Go! 一.vps购买 vps可以选择digital ocean(do) 链接 ,由于是外国网站,响应比较慢,所以最好翻个墙. g ...

  2. webstorm搭建node服务器

    前言,搭建服务器,必须有node.js环境(吐槽:本来就是用node搭建的(⊙o⊙)…) 下载node.js 网址  https://nodejs.org/en/ 先新建项目: 这里选择Node.js ...

  3. 设置node服务器的端口及运行环境

    一般来说,node服务器中通常会看到这样的代码: ``` app.set('port', process.env.PORT || 3000); if ( process.env.NODE_ENV == ...

  4. koa-static node服务器设置静态目录

    最近毕设需要用到上传照片,但当node服务器成功获取前端传来的图片时,又不知道如何在页面获取服务器image目录下的图片,一直报以下错误: 问题主要是无法找到图片url,虽然可以一个个在app.js文 ...

  5. 上传图片,通过node服务器存储在指定目录

    最近做毕设,需要上传图片,因为在本地服务器运行,所以想着前端上传后,通过node服务器接收图片,存储在指定的目录下. 一.前端实现 1.前端的页面和上传图片是利用element-ui组件实现的,&qu ...

  6. 亚马逊EC2服务器申请+NODE服务器部署+阿里云域名申请+SSL证书使用

    最近,由于项目需要,自己申请了一台亚马逊用于部署网站测试,在使用期间,发现网上没有一篇非常完整的文章讲解从服务器申请到域名解析,SSL证书申请的整个流程.所以自己总结一下,以供大家学习! 一.亚马逊E ...

  7. 使用express创建node服务器的两种方法及区别

    使用express创建node服务器有两种方法,如下所示: 方法一: var express = require('express'); var app = express(); app.listen ...

  8. 搭建一个最简单的node服务器

    搭建一个最简单的node服务器 1.创建一个Http服务并监听8888端口 2.使用url模块 获取请求的路由和请求参数 var http = require('http'); var url = r ...

  9. 创建简单的node服务器

    昨天咱们说了封装ajax,今天咱们说一下 自己创建一个建议的node服务器: 话不多说直接上代码: var http = require('http') //对URL 解析为对象//1.导入模块 UR ...

随机推荐

  1. 校园商铺-1开发准备-3 Eclipse与maven的联合配置

    1. JDK安装地址: 2.maven安装地址: 3.maven配置 注意:settings.xml文件极容易出现格式错误 4.tomcat修改端口 我本地启动了其他服务,占用了8080端口,因此需要 ...

  2. 组合数学——cf991E

    /* 如果有某一位,那么这一位必须存在 枚举所有情况,计算每种情况时0额外另算 */ #include<bits/stdc++.h> using namespace std; #defin ...

  3. 存储过程被程序和第三方客户端执行很慢,而sql server management studio执行速度正常

    来自:http://blog.csdn.net/pgbiao/article/details/22388945 原因分析:由于存储过程是预编译的, 在第一次执行的时候, 会生成执行计划, 以后执行的时 ...

  4. python相关小技巧整理[持续更新]

    1. pdb的非常方便的debug,抛弃print吧~ 参考https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ impor ...

  5. VS2010-MFC(常用控件:滚动条控件Scroll Bar)

    转自:http://www.jizhuomi.com/software/191.html 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框和组合框设置了相应属性 ...

  6. System.Math.cs

    ylbtech-System.Math.cs 1. 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c56193 ...

  7. 使用Python实现不同目录下文件的拷贝

    目标:要实现将一台计算机的共享文件夹中的文件备份到另一台计算机,如果存在同名的文件只要文件的大小和最后修改时间一致,则不拷贝该文件 python版本:Python3.7.1 python脚本: fro ...

  8. 解析Asp.net Core中使用Session的方法

    2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Core中引 ...

  9. 关于spring java.lang.IllegalArgumentException: Name for argument type [java.lang.String] 的错误

    况描述: web工程在windows环境eclipse下编译部署没有问题,系统升级时需要运维从Git取相应的源码并编译部署到线上机器,部署启动正常没有错误,当访问业务的action时报错,如下. 错误 ...

  10. SPOJ10707 COT2-Count on a tree II

    COT2 - Count on a tree II 中文题意 离线询问一颗树上路径(u,v)中经过所有点的权值的种类数. 题解 树上莫队.即在树的欧拉序列上进行莫队.同一个点加第一次时增加,第二次时减 ...