You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何为Swagger所有请求添加全局请求头?

实现Laravel Swagger全局统一添加请求头

方法一:全局注解配置(推荐,无需逐个修改接口)

通过创建全局Swagger注解文件,让所有接口自动继承这两个请求头:

  1. 创建全局注解类
    在app/Http/Controllers/Swagger目录下新建GlobalHeaders.php文件,内容如下:
<?php

namespace App\Http\Controllers\Swagger;

/**
 * @OA\Parameter(
 *     name="x-session-id",
 *     in="header",
 *     required=true,
 *     @OA\Schema(type="string"),
 *     description="会话ID,取自Swagger授权会话"
 * )
 * @OA\Parameter(
 *     name="X-Requested-With",
 *     in="header",
 *     required=true,
 *     @OA\Schema(type="string", default="X-Requested-With"),
 *     description="固定请求头标识"
 * )
 */
class GlobalHeaders
{
    // 空类,仅用于承载全局Swagger注解
}
  1. 配置Swagger扫描该文件
    打开config/l5-swagger.php,找到annotations数组,添加全局注解类的路径:
'annotations' => [
    base_path('app/Http/Controllers'),
    base_path('app/Http/Controllers/Swagger/GlobalHeaders.php'), // 添加此行
],
  1. 重新生成Swagger文档
    执行Artisan命令更新文档:
php artisan l5-swagger:generate

完成后所有接口都会自动带上这两个请求头。

方法二:Swagger UI自动填充请求头值

如果需要让Swagger UI自动将授权会话ID填充到x-session-id头中,可修改UI的请求拦截配置:

打开config/l5-swagger.php,找到ui配置项,添加requestInterceptor:

'ui' => [
    // 其他原有配置...
    'requestInterceptor' => "() => {
        // 根据你的授权逻辑调整会话ID的存储键名
        const sessionId = localStorage.getItem('swagger_auth_session');
        return {
            headers: {
                'x-session-id': sessionId || '',
                'X-Requested-With': 'X-Requested-With'
            }
        };
    }",
],

刷新Swagger UI页面后,发送请求时会自动携带这两个请求头。

方法三:单个接口手动添加(适合特殊场景)

如果仅需给部分接口添加,可直接在接口注解中补充请求头参数:

/**
 * 
 * @OA\Get(
 *     path="/place/list",
 *     tags={"Lugares"},
 *     summary="Get places",
 *     // 新增请求头参数
 *     @OA\Parameter(
 *         name="x-session-id",
 *         in="header",
 *         required=true,
 *         @OA\Schema(type="string"),
 *         description="会话ID,取自Swagger授权会话"
 *     ),
 *     @OA\Parameter(
 *         name="X-Requested-With",
 *         in="header",
 *         required=true,
 *         @OA\Schema(type="string", default="X-Requested-With"),
 *         description="固定请求头标识"
 *     ),
 *     @OA\Response(
 *         response=200,
 *         description="Get places list"
 *     ),
 *     @OA\Response(
 *         response="default",
 *         description="An error occurred."
 *     )
 * )
 */
public function list()
{
    $session = session()->get('rismi2_session_data');
    $selDominioId = $session['sel_dominio.id'];
    $plantas = $this->placeRepository->getPlace($selDominioId);
    
    return placeResource::make($plantas);
}

内容的提问来源于stack exchange,提问作者Juan Pablo B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:20:42