Postman Path 参数基础用法

Path 参数是直接嵌入在 URL 路径中的变量,通常用于 RESTful API 设计。在 Postman 中,使用 :variable 语法定义路径参数。例如:

https://api.example.com/users/:userId/posts/:postId

在 Postman 请求配置时,将 :userId:postId 替换为实际值,如 123456,最终请求 URL 变为:

https://api.example.com/users/123/posts/456

Postman 路径参数设置步骤

  1. 在 URL 输入框中直接编写带参数的路径,如 /users/:id
  2. 通过 Params 标签页的 Path Variables 部分动态管理参数
  3. 使用环境变量或全局变量动态注入路径参数值,语法为 {{variable}}

Python Flask 后端接收方案

Flask 通过路由装饰器直接提取路径参数:

from flask import Flask
app = Flask(__name__)

@app.route('/users/<int:user_id>')
def get_user(user_id):
    return f"User ID: {user_id}"

@app.route('/posts/<string:post_slug>')
def get_post(post_slug):
    return f"Post Slug: {post_slug}"

类型转换支持:string(默认)、intfloatpath(包含斜杠)

Python FastAPI 后端接收方案

FastAPI 使用类型注解处理路径参数:

from fastapi import FastAPI
app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int):
    return {"item_id": item_id}

@app.get("/files/{file_path:path}")
async def read_file(file_path: str):
    return {"file_path": file_path}

支持的数据类型包括所有 Python 原生类型和 Pydantic 模型

Django 路径参数处理

在 urls.py 中定义路径转换器:

from django.urls import path
from . import views

urlpatterns = [
    path('articles/<int:year>/', views.year_archive),
    path('articles/<int:year>/<int:month>/', views.month_archive),
]

视图函数接收对应参数:

def year_archive(request, year):
    return HttpResponse(f"Year: {year}")

路径参数验证技巧

  1. Flask 使用 converters 自定义验证:
from werkzeug.routing import BaseConverter

class RegexConverter(BaseConverter):
    def __init__(self, url_map, *items):
        super().__init__(url_map)
        self.regex = items[0]

app.url_map.converters['regex'] = RegexConverter

@app.route('/user/<regex("[a-z]{3}"):username>')
def user_profile(username):
    return f"Username: {username}"

  1. FastAPI 通过 Pydantic 进行高级验证:
from pydantic import constr

@app.get("/users/{username}")
async def get_user(
    username: constr(min_length=3, max_length=50, regex="^[a-z_]+$")
):
    return {"username": username}

测试与调试建议

  1. 在 Postman 中保存常用路径参数请求为集合
  2. 使用 Postman 的 Tests 脚本自动验证响应:
pm.test("Path parameter matches", function() {
    const jsonData = pm.response.json();
    pm.expect(jsonData.item_id).to.eql(parseInt(pm.request.url.path.split("/").pop()));
});

  1. 对于 Python 后端,建议结合 pytest 编写路由测试:
def test_user_route(client):
    response = client.get("/users/42")
    assert b"User ID: 42" in response.data

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐