怎么用脚本获取路由路径

wen 实用脚本 1

本文目录导读:

怎么用脚本获取路由路径

  1. JavaScript (Node.js + Express)
  2. Python (Flask)
  3. Python (Django)
  4. PHP
  5. Shell/Bash 脚本中获取当前路由
  6. Java (Spring Boot)
  7. 综合示例(Node.js 通用)
  8. 关键点说明

获取路由路径的方法取决于你使用的编程语言和框架,以下是几种常见场景的脚本获取路由路径的方法:

JavaScript (Node.js + Express)

// 在请求处理中获取
app.get('/users/:id', (req, res) => {
  console.log('完整路径:', req.originalUrl);      // /users/123?page=1
  console.log('请求路径:', req.path);              // /users/123
  console.log('基础路径:', req.baseUrl);          // /users
  console.log('路由路径:', req.route.path);       // /users/:id
});

Python (Flask)

from flask import request
@app.route('/users/<int:id>')
def get_user(id):
    print('请求路径:', request.path)              # /users/123
    print('完整URL:', request.url)               # http://localhost:5000/users/123
    print('基础路径:', request.base_url)          # http://localhost:5000/
    return 'Hello'

Python (Django)

from django.http import Http404
def my_view(request):
    path = request.path                           # /users/123
    full_path = request.get_full_path()           # /users/123?page=1
    return HttpResponse(f"路径: {path}")

PHP

<?php
// 获取当前请求的完整路径
$requestPath = $_SERVER['REQUEST_URI'];           // /users/123
$scriptPath = $_SERVER['SCRIPT_NAME'];            // /index.php
// 使用 Laravel 框架时
$request = Request::instance();
$path = $request->path();                          // users/123
$fullUrl = $request->fullUrl();                    // http://example.com/users/123
?>

Shell/Bash 脚本中获取当前路由

#!/bin/bash
# 获取脚本自身的路径
SCRIPT_PATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
SCRIPT_NAME="$(basename "$0")"
echo "脚本路径: $SCRIPT_PATH"
echo "脚本名称: $SCRIPT_NAME"
# 如果是通过 URL 访问(如 CGI)
if [ -n "$REQUEST_URI" ]; then
    echo "请求路径: $REQUEST_URI"
fi

Java (Spring Boot)

@RestController
public class UserController {
    @GetMapping("/users/{id}")
    public ResponseEntity<?> getUser(@PathVariable String id, 
                                     HttpServletRequest request) {
        System.out.println("请求路径: " + request.getRequestURI());
        System.out.println("完整URL: " + request.getRequestURL());
        System.out.println("查询参数: " + request.getQueryString());
        return ResponseEntity.ok().build();
    }
}

综合示例(Node.js 通用)

// 通用方法获取路由信息
function getRouteInfo(req) {
  const routeInfo = {
    method: req.method,              // GET, POST, etc.
    baseUrl: req.baseUrl,            // /api
    path: req.path,                  // /users/123
    fullUrl: `${req.protocol}://${req.get('host')}${req.originalUrl}`,
    query: req.query,                // { page: '1' }
    params: req.params,              // { id: '123' }
    originalUrl: req.originalUrl,    // /users/123?page=1
    route: req.route                // 正则/参数路由信息
  };
  return routeInfo;
}

关键点说明

  • req.path - 只包含路径部分,不含查询字符串
  • req.originalUrl/req.originalUrl - 包含完整路径和查询字符串
  • req.baseUrl - 挂载的中间件前缀路径
  • req.route.path - 定义时的路由模式

选择哪种方法取决于你的应用框架和具体需求,通常在实际开发中,你需要结合几个属性来获取完整的路由信息。

抱歉,评论功能暂时关闭!