
Ответчика -это неинтрузивная структура для перехвата любых исходящих запросов и входящих ответов между вашим приложением и вашим сервером в целях отладки.
Ответы написаны в Swift 5.3 и поддерживает iOS 9.0+ , MacOS 10.10+ и TVOS 9.0+ .
Включить реакцию в ваш проект очень просто - все сводится к двум шагам:
Для того, чтобы отклика была работа, его необходимо добавить в качестве посредника между вашим (NS)URLSession и Интернетом. Вы можете сделать это, зарегистрировав предоставленный класс URLProtocol в (NS)URLSessionConfiguration.protocolClasses
// Objective-C
NSURLSessionConfiguration *configuration = [ NSURLSessionConfiguration defaultSessionConfiguration ];
[RDTResponseDetective enableInConfiguration: configuration];// Swift
let configuration = URLSessionConfiguration . default
ResponseDetective . enable ( inConfiguration : configuration ) Затем вы должны использовать эту конфигурацию с помощью (NS)URLSession :
// Objective-C
NSURLSession *session = [[ NSURLSession alloc ] initWithConfiguration: configuration];// Swift
let session = URLSession ( configuration : configuration ) Или, если вы используете Afnetworking / Alamofire в качестве своей сетевой структуры, интеграция реакционного реагирования сводится к простому инициализации вашего AFURLSessionManager / Manager с приведенным выше (NS)URLSessionConfiguration :
// Objective-C (AFNetworking)
AFURLSessionManager *manager = [[AFURLSessionManager alloc ] initWithSessionConfiguration: configuration];// Swift (Alamofire)
let manager = Alamofire . SessionManager ( configuration : configuration )И это все!
Теперь пришло время выполнить фактический запрос:
// Objective-C
NSURLRequest *request = [[ NSURLRequest alloc ] initWithURL: [ NSURL URLWithString: @" http://httpbin.org/get " ]];
[[session dataTaskWithRequest: request] resume ];// Swift
let request = URLRequest ( URL : URL ( string : " http://httpbin.org/get " ) ! )
session . dataTask ( with : request ) . resume ( )Вуаля! ? Проверьте выход консоли:
<0x000000000badf00d> [REQUEST] GET https://httpbin.org/get
├─ Headers
├─ Body
│ <none>
<0x000000000badf00d> [RESPONSE] 200 (NO ERROR) https://httpbin.org/get
├─ Headers
│ Server: nginx
│ Date: Thu, 01 Jan 1970 00:00:00 GMT
│ Content-Type: application/json
├─ Body
│ {
│ "args" : {
│ },
│ "headers" : {
│ "User-Agent" : "ResponseDetective/1 CFNetwork/758.3.15 Darwin/15.4.0",
│ "Accept-Encoding" : "gzip, deflate",
│ "Host" : "httpbin.org",
│ "Accept-Language" : "en-us",
│ "Accept" : "*/*"
│ },
│ "url" : "https://httpbin.org/get"
│ }
Если вы используете Карфаген, добавьте следующую зависимость в свой Cartfile :
github "netguru/ResponseDetective" ~> {version}
Если вы используете кокопод, добавьте следующую зависимость в свой Podfile :
use_frameworks!
pod 'ResponseDetective', '~> {version}'
Если вы используете Swift Package Manager, добавьте этот репозиторий в Swift Packages в настройках вашего проекта.
Чтобы установить тестовые зависимости или для создания ответного реагирования, не запускайте carthage напрямую. Он не может справиться с архитектурой яблочного кремния, представленной в Xcode 12. Вместо этого запустите ее через сценарий carthage.sh :
$ ./carthage.sh bootstrapВ качестве альтернативы, вы можете запустить тесты локально, используя Swift Package Manager со следующей командой:
$ swift test Этот проект был сделан с ♡ от Netguru.
Начиная с версии 1.0.0, релизы реакционного реагирования названы в честь историй Шерлока Холмса Canon, в хронологическом порядке. Что произойдет, если мы достигнем 60 релизов, а истории больше нет? Мы не знаем, может быть, мы начнем называть их после кошек или что -то в этом роде.
Этот проект лицензирован по лицензии MIT . См. License.md для получения дополнительной информации.