适用人群:后端开发者
类型:速查手册
PHP Laravel API
// routes/api.php
Route::get('/users', [UserController::class, 'index']);
Route::post('/users', [UserController::class, 'store']);
Route::get('/users/{user}', [UserController::class, 'show']);
Route::put('/users/{user}', [UserController::class, 'update']);
Route::delete('/users/{user}', [UserController::class, 'destroy']);
// app/Http/Controllers/UserController.php
class UserController extends Controller
{
public function index()
{
return response()->json(User::paginate(20));
}
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
]);
$user = User::create($validated);
return response()->json($user, 201);
}
public function show(User $user)
{
return response()->json($user);
}
public function update(Request $request, User $user)
{
$user->update($request->only(['name', 'email']));
return response()->json($user);
}
public function destroy(User $user)
{
$user->delete();
return response()->json(null, 204);
}
}
Python Flask API
from flask import Flask, request, jsonify
app = Flask(__name__)
users = []
@app.route('/api/users', methods=['GET'])
def get_users():
return jsonify(users)
@app.route('/api/users', methods=['POST'])
def create_user():
data = request.get_json()
user = {'id': len(users) + 1, **data}
users.append(user)
return jsonify(user), 201
@app.route('/api/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
data = request.get_json()
for user in users:
if user['id'] == user_id:
user.update(data)
return jsonify(user)
return jsonify({'error': 'Not found'}), 404
@app.route('/api/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
global users
users = [u for u in users if u['id'] != user_id]
return '', 204
Go Gin API
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
type User struct {
ID int `json:"id"`
Name string `json:"name" binding:"required"`
Email string `json:"email" binding:"required,email"`
}
var users = []User{}
func main() {
r := gin.Default()
api := r.Group("/api")
{
api.GET("/users", getUsers)
api.POST("/users", createUser)
api.PUT("/users/:id", updateUser)
api.DELETE("/users/:id", deleteUser)
}
r.Run(":8080")
}
func getUsers(c *gin.Context) {
c.JSON(http.StatusOK, users)
}
func createUser(c *gin.Context) {
var user User
if err := c.ShouldBindJSON(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
user.ID = len(users) + 1
users = append(users, user)
c.JSON(http.StatusCreated, user)
}
func updateUser(c *gin.Context) {
id := c.Param("id")
var updated User
if err := c.ShouldBindJSON(&updated); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
for i, u := range users {
if fmt.Sprintf("%d", u.ID) == id {
users[i].Name = updated.Name
users[i].Email = updated.Email
c.JSON(http.StatusOK, users[i])
return
}
}
c.JSON(http.StatusNotFound, gin.H{"error": "Not found"})
}
Java Spring Boot API
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping
public List<User> getAll() {
return userRepository.findAll();
}
@PostMapping
public ResponseEntity<User> create(@RequestBody @Valid User user) {
User saved = userRepository.save(user);
return ResponseEntity.status(201).body(saved);
}
@GetMapping("/{id}")
public User getById(@PathVariable Long id) {
return userRepository.findById(id)
.orElseThrow(() -> new RuntimeException("User not found"));
}
@PutMapping("/{id}")
public User update(@PathVariable Long id, @RequestBody User user) {
user.setId(id);
return userRepository.save(user);
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> delete(@PathVariable Long id) {
userRepository.deleteById(id);
return ResponseEntity.noContent().build();
}
}
Node.js Express API
const express = require('express');
const app = express();
app.use(express.json());
let users = [];
app.get('/api/users', (req, res) => res.json(users));
app.post('/api/users', (req, res) => {
const user = { id: users.length + 1, ...req.body };
users.push(user);
res.status(201).json(user);
});
app.put('/api/users/:id', (req, res) => {
const user = users.find(u => u.id === parseInt(req.params.id));
if (!user) return res.status(404).json({ error: 'Not found' });
Object.assign(user, req.body);
res.json(user);
});
app.delete('/api/users/:id', (req, res) => {
users = users.filter(u => u.id !== parseInt(req.params.id));
res.status(204).send();
});
app.listen(3000);
HTTP 状态码速查
| 状态码 | 含义 | 使用场景 |
|---|
| 200 | OK | GET/PUT成功 |
| 201 | Created | POST创建成功 |
| 204 | No Content | DELETE成功 |
| 400 | Bad Request | 参数错误 |
| 401 | Unauthorized | 未登录 |
| 403 | Forbidden | 无权限 |
| 404 | Not Found | 资源不存在 |
| 422 | Unprocessable | 验证失败 |
| 500 | Server Error | 服务器错误 |
统一响应格式
{
"code": 200,
"message": "success",
"data": { },
"meta": {
"page": 1,
"per_page": 20,
"total": 100
}
}