如何使用node生成api接口

文章仅供参考

serve.js 

const http = require(`http`);
const url = require(`url`);

const server = http.createServer((req, res) => {
  // 设置CORS头部,允许所有域的请求
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
  res.setHeader('Access-Control-Allow-Credentials', true);
    const parsedUrl = url.parse(req.url, true); 

    // 检查请求方法和 URL 路径
    if (req.method === `GET` && parsedUrl.pathname === `/ping`) {        
        // 设置响应头部,内容类型为 JSON
        res.setHeader(`Content-Type`, `application/json`);

        // 获取查询参数
        const queryParams = {
            code:200,
            message:"success",
            data:{
               "name": "小明",
                "age": 18
            }
        };

        // 将查询参数转为 JSON 字符串
        const response = JSON.stringify(queryParams);

        // 返回状态码 200 和查询参数
        res.writeHead(200);
        res.end(response);
    } 
    else if(req.method === `POST` && parsedUrl.pathname === `/list`) {
        let source = ['Alabama',
        'Alaska',
        'Arizona',
        'Arkansas',
          ...,
        'West Virginia',
        'Wisconsin',
        'Wyoming'];
        let getData = "";

        // 接收请求体数据,数据量大需要持续监听
        req.on("data", (data) => {
            getData += data
        });
        // 请求体数据接收完毕
        req.on("end",() => {
            //  age=8&height=185
            const data = JSON.parse(getData);
            const filterData = source.filter(item => {
                if(item.includes(data.name)){
                    return true;
                }
            });

            const response = JSON.stringify({
                code:200,
                message:"success",
                data: filterData
            });
            // 返回状态码 200 和查询参数
            res.writeHead(200, {'Content-Type': 'application/json'});
            res.end(response);
        });
    } else if (req.method === 'OPTIONS') {
        // 处理预检请求
        res.writeHead(200);
        res.end();
    } else {
        // 对于非 `/ping` 或非 GET 请求,返回 404 Not Found
        res.writeHead(404);
        res.end(`Resource not found`);
    }
});

// 服务器监听 3000 端口
server.listen(3000, () => {
    console.log(`Server is running on http://localhost:3000/`);
});

运行

node serve.js

axios请求接口

axios.get('http://localhost:3005/ping').then(res => {
    console.log(res.data); // { "name": "小明", age": 18 }
});
axios.post('http://localhost:3005/list', {name:'bama'}).then(res => {
    console.log(res.data); // ['ALbama']
});

拿到数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值