Back End Development and APIs

1.Managing Packages with NPM

package.json

{
	"author": "Gension Impact",
	"description": "A project that does something awesome",
	"keywords": [ "descriptive", "related", "freecodecamp" ],
	"license": "MIT",
	"version": "1.2.0",
	

	"name": "fcc-learn-npm-package-json",
	"dependencies": {
		
		"express": "^4.14.0"
	},
	"main": "server.js",
	"scripts": {
		"start": "node server.js"
	},
	"repository": {
		"type": "git",
		"url": "https://github.com/freeCodeCamp/boilerplate-npm.git"
	}
}

2.Base Node and Express

myApp.js

const bodyParser = require('body-parser');
let express = require('express');
let app = express();


//使用body-parser中间件处理 URL 编码的数据
app.use(bodyParser.urlencoded({extended:false}));
//Body-Parser 设置:app.use(bodyParser.urlencoded({ extended: false })); 
//可以处理 URL 编码的数据,
//但如果需要处理 JSON 格式的数据,可以添加以下代码:
app.use(bodyParser.json());

// 控制台打印 "Hello World"
console.log("Hello World");

// 中间件:记录每个请求的请求方法、路径和 IP 地址
app.use(function middleware(req, res, next) {
    // 构造日志字符串格式:method path - ip
    var string = req.method + " " + req.path + " - " + req.ip;
    // 将日志字符串打印到控制台
    console.log(string);
    // 调用 next() 以继续执行下一个中间件或路由处理程序
    next();
});

// 路由:处理根路径的 GET 请求,返回 index.html 文件
app.get("/", function(req, res) {
    res.sendFile(__dirname + "/views/index.html");
});

// 将 /public 目录中的静态文件服务于 /public 路径
app.use("/public", express.static(__dirname + "/public"));

// 加载 dotenv 包以加载 .env 文件中的环境变量
require('dotenv').config();

// /json 路径的 GET 请求处理程序
app.get("/json", (req, res) => {
    // 检查环境变量 MESSAGE_STYLE 是否为 'uppercase'
    if (process.env.MESSAGE_STYLE === 'uppercase') {
        // 如果是,将消息转换为大写
        res.json({ message: "HELLO JSON" });
    } else {
        // 否则,返回原始消息
        res.json({ message: "Hello json" });
    }
});

// 使用中间件和处理程序链的路由
app.get('/now', 
    // 中间件函数:添加当前时间到请求对象的 `req.time` 键
    function(req, res, next) {
        req.time = new Date().toString(); // 获取当前时间
        next(); // 继续执行下一个函数
    },
    // 最终处理程序:使用 JSON 响应返回时间
    function(req, res) {
        res.json({ time: req.time }); // 返回格式化的时间
    }
);



//构建一个echo服务器 处理GET/:word/echo路径
app.get('/:word/echo',(req,res) =>{
    //从请求参数中获取需要重复的单词
    const word = req.params.word;
    //以JOSO格式响应
    res.json({
        echo:word
    });
});


app.route('/name')
    .get((req, res) => {
        //从查询字符串中获取first和last参数
        const first = req.query.first;
        const last = req.query.last;
        //返回JSON响应
        res.json({ name: `${first} ${last}`});
    })
    .post((req, res) => {
        //从请求体中获取first和last参数
        const { first, last } = req.body;
        //返回JSON响应
        res.json({ name: `${first} ${last}` });
    });



module.exports = app;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值