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

如何使用Axios发送带指定curl参数的请求(NestJS调用Jenkins场景)

基于NestJS + Axios 实现Jenkins触发构建请求的方案

首先先拆解你给出的curl请求的核心配置:基础身份认证、Jenkins CSRF请求头(Crumb)、POST表单参数提交,对应Axios的实现逻辑如下:

步骤1:依赖安装(未安装相关依赖时执行)

npm install @nestjs/axios axios qs @types/qs

步骤2:业务代码实现

import { HttpService } from '@nestjs/axios';
import { firstValueFrom } from 'rxjs';
import * as qs from 'qs';

// 业务服务类
export class YourJenkinsService {
  // 注入HttpService
  constructor(private readonly httpService: HttpService) {}

  async triggerJenkinsBuild() {
    // 替换为你的实际配置值
    const JENKINS_URL = '你的Jenkins服务根地址';
    const JOB_NAME = '要触发的任务名';
    const JENKINS_USER = 'pp';
    const JENKINS_USER_TOKEN = '1232343454564123453';
    const JENKINS_CRUMB = '你获取到的Jenkins CSRF校验值';
    const JOB_TRIGGER_TOKEN = '123456';

    try {
      const res = await firstValueFrom(
        this.httpService.post(
          `${JENKINS_URL}/job/${JOB_NAME}/buildWithParameters`,
          // 表单参数,需要追加其他构建参数直接在该对象内新增即可
          qs.stringify({
            token: JOB_TRIGGER_TOKEN,
          }),
          {
            // 对应curl的--user基础认证配置
            auth: {
              username: JENKINS_USER,
              password: JENKINS_USER_TOKEN
            },
            headers: {
              'Content-Type': 'application/x-www-form-urlencoded',
              'Jenkins-Crumb': JENKINS_CRUMB
            }
          }
        )
      )
      // 成功逻辑处理
      console.log('任务触发成功,响应状态码:', res.status)
      return res.data
    } catch (err) {
      // 错误逻辑处理
      console.error('任务触发失败:', err.response?.data || err.message)
      throw err
    }
  }
}

注意事项

  • 你原curl中重复出现两次--user属于笔误,保留正确的用户凭证即可,重复配置会被后者覆盖
  • 如果不知道怎么获取Jenkins Crumb,可以先带基础认证发送GET请求到${JENKINS_URL}/crumbIssuer/api/json,返回结果中的crumb字段就是需要的校验值
  • 生产环境不建议关闭Jenkins CSRF保护,所以请求必须携带Jenkins-Crumb头
  • 若不需要获取完整响应头和状态码,可自行调整代码只返回响应体即可

内容的提问来源于stack exchange,提问作者Nithin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:24:04