搭建一个node apI服务器 写一个登陆的接口

1、搭建一个node服务器  http.createServer()
2、引入需要的node内置模块
----- 通过 req.url 得到请求
----- 得到当前请求 url.query
----- 判断是什么请求(登录 ? 注册?)  url.pathname  注:此时的url是对象的格式  使用 url.pathname 需将字符串格式的url转为对象 方可使用
----- 获取前端发送的数据  用字符串splice方法截取字段 再将对象格式的url转为字符串 querystring.parse()
 
引入模块
const http = require("http");
const url = require("url");
const querystring = require("querystring");
const server = http.createServer((req, res) => {   req表示请求信息 res表示回复信息

    console.log(req);//req中有很多参数 要知道是什么请求 通过地址来判断 输出req.url

    console.log(req.url);//输出在url上请求的数据 /login?use=张三&pas=1234 同时也会输出一个 /favicon.ico 的信息(谷歌浏览器的情况) 它是每个地址请求前面的小图标 在这里我们不需要 做一下判断过滤掉它

let urlString = req.url;
if (urlString !== "/favicon.ico") {
  判断后就能成功得到我们要的不带图标的url请求
  那么  如何分辨当前是登录还是注册的请求呢 url内置模块中的query可解决 

  首先得到当前前端发送的url   req.query 可以当前请求的url数据
  console.log(req.query);//输出的是前端当前请求的url数据 /reg?use=张三&pas=1234 
  然后利用url对象中的pathname判断
  当前的req.query还是字符串格式 我们需要把现在的字符串转为对象 url.parse()
  let urlObj = url.parse(urlString)
  console.log(urlObj);

     UrlObj {
 protocol: null,
 slashes: null,
 auth: null,
 host: null,
 port: null,
 hostname: null,
 hash: null,
 search: '?use=wangyi&pas=1234',
 query: 'use=wangyi&pas=1234',
 pathname: '/login',
 path: '/login?use=wangyi&pas=1234',
 href: '/login?use=wangyi&pas=1234' 
}   此时的url已被转为对象了 为null的信息就是模块中url的其他组成部分


 if (urlObj.pathname === "/login") {

判断出是登陆还是注册 接下来获取前端发送的数据 通过 query: 'use=wangyi&pas=1234'截取出信息 此时query:是对象 需要将它转为字符串 querystring内置模块 querystring.parse() 用字符串splice方法实现

    let query = querystring.parse(urlObj.query);
          console.log(query); //{ use: 'wangyi', pas: '1234' }
    if (query.use === "张三" && query.pas === "1234") {
            res.writeHead(200, { "Content-Type": "text/html" }); //回复的格式设置
            res.end("login ok");
        } else {
                res.end("login error");
                }
              }
            }
        });



    // 监听端口号
    server.listen(3000, () => {
        console.log("服务器启动成功");
    });

猜你喜欢

转载自www.cnblogs.com/lucktomiao/p/10405916.html