【问题标题】:Generate cURL output from Moya request?从 Moya 请求生成 cURL 输出?
【发布时间】:2024-01-19 07:36:01
【问题描述】:

我正在使用Moya 并且需要为网络请求打印 cURL。

通常,在 Alamofire 4 中,我会这样做:

let req = Alamofire.request(someURLRequestConvertible)
debugPrint(req) // will print cURL

我的 Moya 呼叫站点如下所示:

MyMoyaProvider.request(MyEndPoints.login(params)) { (result) in }

我查看了 Moya 的文档,但我似乎无法获得我正在寻找的结果。我启用了NetworkLoggingPlugin,但仍然不确定如何为某些请求打印cURL。有人可以帮我找到将 Moya requestcURL 打印到控制台的正确方法吗?

【问题讨论】:

    标签: ios alamofire moya


    【解决方案1】:

    如果你初始化你的NetworkLoggerPlugin,它的cURL标志默认设置为false。像NetworkLoggerPlugin(cURL: true)willSendRequest 一样初始化它应该打印cURL

    根据 GitHub 上的@BasThomashttps://github.com/Moya/Moya/issues/1037#event-1027530791

    【讨论】:

      【解决方案2】:

      对于 Moya 14.0.*

      static fileprivate let provider = MoyaProvider<ApiService>(endpointClosure: { (target: ApiService) -> Endpoint in
          let defaultEndpoint = MoyaProvider.defaultEndpointMapping(for: target)
          switch target {
          default:
              let httpHeaderFields = ["Content-Type" : "application/json"]
              return defaultEndpoint.adding(newHTTPHeaderFields: httpHeaderFields)
          }
      }, plugins: [
          NetworkLoggerPlugin(configuration: .init(formatter: .init(), output: { (target, array) in
              if let log = array.first {
                  print(log)
              }
          }, logOptions: .formatRequestAscURL))
      ])
      

      【讨论】: