后端开发是Web应用的核心,负责处理业务逻辑、数据存储和API接口。本文将带你学习三种主流的后端技术:Python的Flask和Django框架,以及Node.js平台,掌握API开发、数据库操作和服务器部署等核心技能。
Flask 轻量级 Python 框架
Flask是一个轻量级的Python Web框架,简单灵活,适合快速开发小型项目和API服务。
Flask 基础入门
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/') def index(): return 'Hello, Flask!'
@app.route('/api/users') def get_users(): users = ['Alice', 'Bob', 'Charlie'] return jsonify({'users': users})
@app.route('/api/users', methods=['POST']) def create_user(): data = request.get_json() return jsonify({'message': 'User created', 'data': data}), 201
@app.route('/api/users/<int:user_id>') def get_user(user_id): return jsonify({'user_id': user_id})
if __name__ == '__main__': app.run(debug=True)
|
Flask-SQLAlchemy 数据库操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| from flask import Flask from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydb.db' db = SQLAlchemy(app)
class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) email = db.Column(db.String(120), unique=True, nullable=False)
def to_dict(self): return {'id': self.id, 'name': self.name, 'email': self.email}
with app.app_context(): db.create_all()
user = User(name='Alice', email='alice@example.com') db.session.add(user) db.session.commit()
users = User.query.all() user = User.query.get(1) user = User.query.filter_by(name='Alice').first()
user.name = 'Alice Smith' db.session.commit()
db.session.delete(user) db.session.commit()
|
Django 全功能 Python 框架
Django是一个功能强大的Python Web框架,提供了完整的ORM、认证系统、管理后台等功能,适合大型项目开发。
Django 项目创建
1 2 3 4 5 6 7 8 9 10
| pip install django
django-admin startproject myproject cd myproject
python manage.py startapp myapp
python manage.py runserver
|
Django 模型和视图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| from django.db import models
class Book(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2) published_date = models.DateField()
def __str__(self): return self.title
from django.http import JsonResponse from .models import Book
def book_list(request): books = Book.objects.all() data = [ {'id': book.id, 'title': book.title, 'author': book.author, 'price': str(book.price)} for book in books ] return JsonResponse({'books': data})
def book_detail(request, pk): book = Book.objects.get(pk=pk) data = { 'id': book.id, 'title': book.title, 'author': book.author, 'price': str(book.price) } return JsonResponse(data)
from django.urls import path from . import views
urlpatterns = [ path('books/', views.book_list, name='book-list'), path('books/<int:pk>/', views.book_detail, name='book-detail'), ]
|
Django REST Framework
Django REST Framework是Django的REST API框架,提供了强大的序列化和视图功能。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| from rest_framework import serializers, viewsets from .models import Book
class BookSerializer(serializers.ModelSerializer): class Meta: model = Book fields = ['id', 'title', 'author', 'price', 'published_date']
class BookViewSet(viewsets.ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer
from django.urls import path, include from rest_framework.routers import DefaultRouter from .views import BookViewSet
router = DefaultRouter() router.register(r'books', BookViewSet)
urlpatterns = [ path('', include(router.urls)), ]
|
Node.js 后端开发
Node.js是基于Chrome V8引擎的JavaScript运行时,使用JavaScript开发后端服务,适合构建高并发应用。
Express 框架
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
const express = require('express'); const app = express(); const port = 3000;
app.use(express.json()); app.use(express.urlencoded({ extended: true }));
app.get('/', (req, res) => { res.send('Hello, Express!'); });
app.get('/api/users', (req, res) => { const users = ['Alice', 'Bob', 'Charlie']; res.json({ users }); });
app.post('/api/users', (req, res) => { const data = req.body; res.status(201).json({ message: 'User created', data }); });
app.get('/api/users/:id', (req, res) => { res.json({ userId: req.params.id }); });
app.listen(port, () => { console.log(`Server running on port ${port}`); });
|
Node.js 数据库操作 - Mongoose
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/mydb') .then(() => console.log('Connected to MongoDB')) .catch(err => console.error('Connection error', err));
const userSchema = new mongoose.Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, age: { type: Number, default: 0 } });
const User = mongoose.model('User', userSchema);
const user = new User({ name: 'Alice', email: 'alice@example.com', age: 25 }); await user.save();
const users = await User.find(); const user = await User.findById(id); const user = await User.findOne({ name: 'Alice' });
await User.findByIdAndUpdate(id, { name: 'Alice Smith' });
await User.findByIdAndDelete(id);
|
Koa 框架
Koa是Express团队开发的新一代Node.js框架,使用async/await语法,更简洁优雅。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| const Koa = require('koa'); const Router = require('koa-router'); const bodyParser = require('koa-bodyparser');
const app = new Koa(); const router = new Router();
app.use(bodyParser());
router.get('/', async (ctx) => { ctx.body = 'Hello, Koa!'; });
router.get('/api/users', async (ctx) => { ctx.body = { users: ['Alice', 'Bob'] }; });
router.post('/api/users', async (ctx) => { const data = ctx.request.body; ctx.status = 201; ctx.body = { message: 'User created', data }; });
app.use(router.routes()); app.listen(3000);
|
后端部署
Python 应用部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8000 app:app
gunicorn -w 4 -b 0.0.0.0:8000 myproject.wsgi:application
server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; } }
|
Node.js 应用部署
1 2 3 4 5 6 7 8 9 10
| npm install -g pm2
pm2 start app.js --name myapp
pm2 list pm2 restart myapp pm2 logs myapp
|
总结
后端开发是Web应用的核心,掌握Flask、Django和Node.js三种技术可以应对不同场景的需求:
- Flask:轻量级,适合小型项目和API服务
- Django:全功能框架,适合大型企业级项目
- Node.js:高并发,适合实时应用和微服务
学习后端开发需要掌握:路由配置、数据库操作、API设计、身份认证、服务器部署等核心技能。希望本文能帮助你快速入门后端开发!