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 p>
6 Réponses :
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 >
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
let provider: MoyaProvider = MoyaProvider (plugins: [NetworkLoggerPlugin ()] 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
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 /… )
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
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.
À 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])
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])
utilisez
NetworkLoggerPlugin.swift -> willSenddans moya vous obtenez la requête complètepar 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.