5
votes

Comment déboguer / voir la demande définie via l'API avec Moya?

Comment déboguer la requête configurée sur les serveurs principaux?

J'aimerais pouvoir voir exactement ou imprimer la demande complète avec les paramètres d'en-têtes, etc ... qui est envoyée aux serveurs chaque fois que je fais une demande par Moya


3 commentaires

utilisez NetworkLoggerPlugin.swift -> willSend dans moya vous obtenez la requête complète


par exemple, vous obtenez l'exemple de ici


Merci pour votre réponse. avec votre permission, je l'ajoute comme réponse, afin que cela puisse aider les autres.


6 Réponses :


8
votes

Cela se fait en activant un plugin que Moya l'a déjà. c'est NetworkLoggerPlugin . Je dois changer cette ligne de code:

var provider = MoyaProvider<MainAPI>(plugins: [NetworkLoggerPlugin(verbose: true)])

avec:

var provider = MoyaProvider<MainAPI>()

Merci à @ Anbu.Karthik

p >


3 commentaires

heureux de voir ça


à partir de moya 14.0, nous ne pouvons pas utiliser verbose: true


de Moya 14 nous ne pouvons pas l'utiliser



0
votes
  1. utilisez ceci pour configurer le fournisseur let provider: MoyaProvider = MoyaProvider (plugins: [NetworkLoggerPlugin ()]
  2. dans le fichier NetworkLoggerPlugin.swift du pod Moya, vous pouvez modifier logOptions dans la structure Configuration donnée. Dans la méthode d'initialisation, logOptions: LogOptions = .requestBody peut être modifié. C'est une énumération. Vous pouvez donc essayer de modifier la valeur de logOptions comme vous le souhaitez.

* Je pense que vous pouvez modifier un fichier pod car cela n'affecte pas la base de code car il s'agit d'une option de journalisation côté développeur


1 commentaires

Salut, Existe-t-il un moyen de voir ma demande de journal et ma réponse dans le compilateur à l'aide de NetworkLoggerPlugin logOptions? Je vous remercie. ( stackoverflow.com/questions/ 61479627 /… )



6
votes

Si vous utilisez Moya à partir de 14, vous pouvez créer votre propre plugin détaillé, comme ceci:

struct VerbosePlugin: PluginType {
    let verbose: Bool

    func prepare(_ request: URLRequest, target: TargetType) -> URLRequest {
        #if DEBUG
        if let body = request.httpBody,
           let str = String(data: body, encoding: .utf8) {
            print("request to send: \(str))")
        }
        #endif
        return request
    }
}

et utiliser: let provider = MoyaProvider (plugins: [VerbosePlugin ( verbose: vrai)])


0 commentaires

0
votes

Publication croisée :

Voici un exemple fonctionnel d'un plugin détaillé qui affichera à la fois les données de demande et de réponse .

Ajoutez le code suivant à l'endroit où vous appelez Moya:

let APIManager = MoyaProvider<API>( plugins: [
    VerbosePlugin(verbose: true)
    ])

Dans votre configuration, ajoutez le nouveau plugin:

XXX

Cela affichera à la fois la demande en cours et la réponse renvoyée. Si la réponse est encodée en JSON, elle imprimera plutôt le JSON, sinon elle tentera d'imprimer les données de réponse brutes.


0 commentaires

4
votes

À partir de Moya 14.0, vous devez faire ceci:

let loggerConfig = NetworkLoggerPlugin.Configuration(logOptions: .verbose)
let networkLogger = NetworkLoggerPlugin(configuration: loggerConfig)    
let provider = MoyaProvider<YourAPI>(plugins: [networkLogger])


0 commentaires

0
votes

Pour Moya 14.0 et les versions ultérieures, utilisez comme ceci

let plugin: PluginType = NetworkLoggerPlugin(configuration: .init(logOptions: .verbose))

let provider = MoyaProvider<T>(plugins: [plugin])


0 commentaires