node.js学习9--http模块-实现get接口功能

http模块-实现get接口功能

get接口-无参数

假设要实现一个get类型的接口。具体要求如下:

地址:/gettime

功能:以json字符串格式返回服务器的时间戳。

示例:

// 不带参数
输入:localhost:8080/gettime;
返回:{_t:1563265441778}

参考代码:

// 引入http模块
const http = require('http');
// 引入url模块
const url = require('url');

const app = http.createServer((req, res) => {
  let { pathname } = url.parse(req.url, true);
  if (pathname === '/gettime') {
    let obj = {_t : Date.now()}
    res.end(JSON.stringify(obj));//  把对象转成字符串之后再返回
  } else {
    res.end('error');
  }
});

// 监听端口
app.listen(8080, () => {
  console.log(8080);
});

说明:

  • req.method 可以判断请求的类型,请求方式 (大写名称,判断时需要注意)。
  • res.end()的参数只能是字符串,而不能是对象。

接口与静态资源的区别

在这里插入图片描述

服务器上有很多的资源,每个资源都有自己的url。客户端浏览器想要访问某个资源就要向服务器发起对应的请求。

资源的分类:

  • 静态资源。
    • 它们一般表现为一个一个的文件。例如index.html, style.css, index.js。
    • 处理请求静态资源时,服务器一般就直接读出资源的内容,再返回给客户端浏览器。
  • 动态资源:接口
    • 它们不是以某个具体的文件存在的,而是通过服务器上的一段代码处理得到的数据,访问接口时,服务器会执行这段代码,然后把代码的执行结果返回给客户端浏览器。

get接口-带参数

假设要实现一个get类型的接口,具体要求如下:

地址:localhost:8080/get

功能:获取用户传入的参数,并以json字符串格式返回,在返回的信息中要加上时间戳.

示例:

// 带参数
输入:localhost:8080/get?name=filex&age=30;
返回:{name:filex,age:30,_t:1563265441778}

分析:get请求的参数附加在url中,可以使用url模块来取出用户url中的参数部分,再使用querystring模块取出具体的参数值。

这里直接使用两个核心模块urlquerystring来实现上述的需求。

const http = require('http');
const queryString = require('querystring');
const url = require('url');

const server = http.createServer(function(req, res) {
  var { pathname, query } = url.parse(req.url);
  var obj = queryString.parse(query);

  console.log(p, url.parse(req.url));
  if (pathname === '/get' && req.method === 'GET') {
    res.setHeader('content-type', 'application/json');
    obj.d = Date.now();
    res.end(JSON.stringify(obj));
  } else {
    res.setHeader('content-type', 'text/html;charset=utf-8');
    res.end('error');
  }
});

server.listen(8088, function() {
  console.log('success', 8088);
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值