Tag: alamofire

可重用的APIManager-在Swift中为IOS应用程序使用Alamofire和EvReflection

在本文中,我将分享我之前工作过的项目中使用的APIManager。 它是一个单例类,用于管理不同类型的API请求,因此实现将很容易且可重用。 配置 首先,我们需要用于请求和响应类的映射模型才能使用服务。 因此,在APIManager中,使用模型来处理网络请求/响应操作。 您可以在这里找到详细信息。 使用Alamofire和EVReflection自动映射和解析JSON 我经常使用Alamofire进行HTTP联网,这是用Swift编写的流行联网库。 因此,它是… medium.com 另外,我还使用了RouterManager作为APIManager,您可以在这里找到。 使用Swift中的路由器为IOS应用程序更好地路由 在本文中,我将讨论在我正在制作IOS应用程序的项目中使用的其他可重用类。 APIManager使用另一个管理器来处理不同的需求,即AlertManager处理错误警报弹出窗口,而ErrorManager处理错误操作等。因此,在本文中,我省略了有关它们的详细信息。 我将在下一篇文章中分享。 脚步 在/ managers文件夹中设置一个APIManager。 设置您的API方法,方法将请求/响应类作为参数,并使用RouterManager类处理路由以进行操作(.GET,.POST等) 经理 实作 在ViewModel,Presenter等中,可以调用APIManager的方法(例如.getLogin,.postLogin)等。 因此,响应将由APIManager处理,您可以完成自己的任务。 (即将LoggedInState设置为.loggedIn或重定向到其他场景等) 感谢您的阅读。

使用Alamofire和SwiftyJSON构建简单的API搜索

本文有助于设计带有SearchBar的UITableViewController并在我们每次开始键入时填充结果,然后在点击搜索结果时打开SafariWebView。 此外,本文还有助于了解如何将Alamofire与SwiftyJSON结合使用以访问 API并获取一些结果,对其进行解析并将结果显示在UITableViewController中。 在Xcode中创建一个新项目 2.转到终端并输入项目目录路径,然后键入pod init这会在我们的目录中创建podfile ,然后从项目目录中打开此podfile,然后将其放入其中 平台:ios,’9.0’target’WikiSearch’做 use_frameworks! pod’Alamofire’,’〜> 4.7′ pod’SwiftyJSON’,’〜> 4.0’结束 然后在终端中运行pod install ,这将帮助我们安装这些依赖项并创建.xcworkspace文件,关闭项目并打开* WikiSearch.xcworkspace *文件。 如果您不喜欢cocoapods,请在这里看看 3.在Main.storyboard添加带有NavigationController的UITableViewController 4.我将创建一个ImageView , TitleLabel和DescriptionLabel ,因此TableView单元中将有三个UIElement。 5.将一个新类CustomTableViewCell子类化UITableViewCell到项目中,并从表视图单元格中添加引用布局。 整个项目可以在这里下载 你可以通过LinkedIn与我联系 谢谢阅读… later稍后在日记中阅读此故事。 every‍💻每个星期天早晨,您都可以在收件箱中等待本周最受关注的Tech故事。 阅读技术新闻中的值得注意。

使用Alamofire 5和可编码的第1部分:在Swift 4中编写网络层:API路由器

如今,使用Web服务API是现代移动应用程序开发的重要组成部分。 在本文中,我想分享一种使用Alamofire和Swift 4设置网络层的简单方法。 我们将在构建API客户端时完成以下步骤: API路由器:端点构建器 API客户端:创建并执行请求 可编码:解析JSON并映射到数据结构 使用未来/承诺 使用反应式编程(ReactiveCocoa和RxSwift) 在第一部分中,我们将重点介绍请求构建器组件。 API路由器:端点构建器 具有一个提供端点的API请求构建器组件很重要。 路由器将使用HTTP method , HTTP headers , path和parameters来呈现端点 推荐的方法之一是使用Swift Enum创建我们的API路由器。 这是路由器的实现: 端点构建器 理想情况下,您有一个Constants.swift文件,可以将所有常量都放在一个位置

使用Alamofire在iOS上使用证书固定的网络安全

在当今的现代世界中,我们与移动设备的连接比以往任何时候都多。 我们通过应用程序保留和共享我们的数据。 但是,当我们在星巴克使用不安全的wifi进行工作时,如果这些敏感数据暴露了怎么办? 作为开发人员,我们应注意用户的隐私及其数据。 在本文中,我想谈谈SSL,以及我们如何通过SSL固定使我们的应用程序更安全。 什么是SSL? SSL或安全套接字层是一种协议,该协议通过Netscape Communications在1999年设计的网络提供加密的通信。当您使用浏览器检查电子邮件或从Medium阅读文章时,如果在网站上看到“ https”前缀,您可能会假设您使用SSL / TLS进行通信。 在SSL连接中,客户端和服务器端都必须具有安全证书,并且它们将在发送数据之前对数据进行加密。 只有拥有正确安全证书的人员才能解密这些响应。 SSL如何运作? 客户端连接到服务器,并要求服务器标识自己 服务器发送其公钥和证书。 该证书已由客户端控制(无论是否经验丰富,已被吊销)。 如果此证书有效,则客户端将创建一个加密的对称会话密钥,并将其发送到服务器。 服务器使用其私钥解密此对称会话密钥,并使用会话密钥将客户端发送到确认(ACK)以启动加密的会话。 从现在开始,此会话发送的所有数据将被严格终止。 为什么要使用SSL固定? SSL固定将帮助我们避免中间人攻击。 使用已固定到应用程序的证书,我们可以确保我们已连接到正确的服务器。 当服务器使用公钥发送其证书时,我们将了解我们不会被某人欺骗。 使用Alamofire进行SSL固定: 我通常使用Alamofire,我必须说我真的很高兴。 Github上最受好评的项目之一,可以提供完美的帮助。

Alamofire Multipart与参数:从UIImagePickerController Swift上传图像

第一。 基本上,上传多部分表单UIImagePickerController时,您将需要来自图像选择器的数据文件。 首先,您将需要UIImagePickerControllerDelegate和UINavigationControllerDelegate并在info.plist中添加Privacy-Photo Library使用说明。 在调用函数imagePickerController之前,需要在函数内部添加委托UIImagePickerController。 例如我有功能handleProfilePicker: func handleProfilePicker(){ 让选择器= UIImagePickerController() picker.delegate =自我 picker.allowsEditing = true ….(您的Picker颜色的NavigationBar的自定义代码) self.present(picker,animated:true,completion:nil) } 描述委托后,您可以调用函数imagePickerController didFinishPickingMediaWithInfo。 此功能是从照片库中捕获文件图像。 func imagePickerController(__ picker:UIImagePickerController,didFinishPickingMediaWithInfo信息:[String:任何]){ } 当我完成从选择器中选择的图像以处理值编辑图像和未编辑图像时,我具有自定义代码,这是: func imagePickerController(__ picker:UIImagePickerController,didFinishPickingMediaWithInfo信息:[String:任何]){ var selectedImage:UIImage? 如果让editedImage = info [“ UIImagePickerControllerEditedImage”]为? UIImage { selectedImage = editedImage }如果让originalImage = info [“ UIImagePickerControllerOriginalImage”]设置为其他? UIImage { selectedImage = originalImage } 如果让selectedImages = selectedImage […]

Criando uma Pokedex com Swift零件:1/3

Instalando o CocoaPods 口袋妖怪在宠物小精灵上的宣传很不错。 Vamos criar uma lista(Pokedex)dos 881 pokemons que temos atualmente。 出售产品和服务的方法是将uma API作为亚伯大·奎·维特拉·托泽斯的信息,作为信息。 pokéapi–神奇宝贝RESTful API Pokeapi Pokemon RESTful API pokeapi.co uma API的Chamada Alamofire的Antes de tudo precisamos。 Elairános ajudar com作为HTTP的要求。 Alamofire / Alamofire Alamofire – Swift github.com中的优雅HTTP网络 可以使用Alamofire vamos或CocoaPods,也可以使用gerenciadordedependências,也可以使用faal mais dele nesse post。 CocoaPods.org iOS和Mac项目的依赖管理器 cocoapods.org Nessa primeira parte irei mostrar como instalar o […]

清洁架构:Swift中的网络

我们所有人都在朝着iOS的干净架构迈进,为此,我们一直在尝试许多方法,例如:从MVC迁移到MVVM,以使我们的视图模型独立且易于测试。 诸如Viper和MVVM-C之类的更多模式也已经出现,并被开发人员广泛采用。 在本教程中,我们将看到如何使用Restofire编写干净的网络请求。 Restofire是在Alamofire之上编写的面向协议的网络抽象层, 用于以声明方式使用服务 我们将使用来自apiary.io的Notes API — https://rahulkatariya.docs.apiary.io/ 分解cURL请求 主持人 private-07c21-rahulkatariya.apiary-mock.com 标头 – Content-Type: application/json 路径 – notes 响应 — NoteResponseModel的集合 配置Restofire的最佳位置是在didFinishLaunchingWithOptions内部。 设置主机和标头后,它将应用于我们使用Restofire发出的所有网络请求。 您可以全局提供更多配置,例如请求超时,重试代码,重试间隔,最大重试次数,验证,身份验证等。 默认情况下,所有网络响应的类型都是Data但是我们可以根据需要设置自定义响应序列化器。 对于此演示,我们将通过在应用程序内部添加以下代码段来使用JSONDecodableResponseSerializer 。 通过添加以上代码,我们现在可以将可解码类型用作请求的响应。 让我们为Note响应创建一个可解码的模型。 在Restofire中,每个HTTP请求都是独立的,并由Requestable协议表示,并提供委托方法来处理响应。 委托方法可用于将响应保存在CoreData或Realm或UserDefaults内部,或者您可以执行任何自定义操作。 让我们创建第一个网络请求以获取所有注释。 我们已经在AppDelegate全局配置了host和headers 。 让我们创建NotesGetAllService服务,其path as ” notes ” , response as [NoteResponseModel] 您可能已经注意到,我已经通过侦听响应回调(如下面的代码)在可CoreData内部传递了NSManagedObjectContext ,以将响应结果存储在CoreData中。 现在, NotesGetAllService非常灵活,可以在我们的代码中的任何地方调用,并将响应存储在CoreData中。 在AppDelegate设置CoreData之后,我们现在可以请求获取所有注释。 execute方法是Requestable协议的默认实现,该协议发出请求并调用NotesGetAllService的委托方法。 注意:如果您希望响应也随调用一起传递,则还可以在execute方法内传递完成处理程序。 请求完成后,它将保存在CoreData中的注释列表,并且与FRC绑定的NotesTableViewController将自动显示结果。 可以在此处找到功能齐全的演示,包括本文随附的NotePostService和NoteDeleteService -https://github.com/Restofire/RestofireDemo 快乐网络😎 […]

如何使用Cocoapods安装Alamofire

你好 最近,我使用Cocoapods安装了Alamofire,以构建天气预报应用程序。 Alamofire是用Swift编写的HTTP网络库。 使用Alamofire,您可以做很多事情,例如从Web服务器下载数据。 访问https://github.com/Alamofire/Alamofire了解有关Alamofire的更多信息。 本文仅出于我自己的注释目的,因此我不会忘记安装过程。 什么是Cocoapods? Cocoapods是iOS项目中非常流行的依赖项管理器,它允许您以逻辑方式管理所有库。 访问https://cocoapods.org/了解更多信息。 将Cocoapods安装到项目中 打开您的终端并在下面写一行代码,然后将要求您输入密码。 须藤宝石安装cocoapods 安装完成后,您需要通过终端进入您的项目目录(使用cd命令),并在下面编写一行代码。 注意 :如果此时打开X代码,安装将无法正常进行。 按⌘+ Q退出X代码。 荚初始化 然后转到您的项目目录,您将找到一个名为“ Podfile ”的文件。 使用文本编辑器编辑“ Podfile” 当使用文本编辑器打开“ Podfile”时,文件的内容如下所示。 #取消注释下一行以定义项目的全局平台 #platform:ios,’9.0′ 目标’yourProjectName’做 #如果您不使用Swift并且不想使用动态框架,请注释下一行 use_frameworks! #yourProjectName的广告连播 目标’yourProjectNameTests’做 继承! :search_paths #测试豆荚 结束 目标’yourProjectNameTests’做 继承! :search_paths #测试豆荚 结束 结束 现在,您必须在源代码下方添加几行粗体代码。 (访问https://github.com/Alamofire/Alamofire#features以获取最新代码) 使用文本编辑器打开“ Podfile”时,文件内容如下所示。 #取消注释下一行以定义项目的全局平台 #platform:ios,’9.0′ 平台:ios,“ 10.0” 来源’https://github.com/CocoaPods/Specs.git’ 目标’yourProjectName’做 #如果您不使用Swift并且不想使用动态框架,请注释下一行 use_frameworks! pod’Alamofire’,’〜> […]

使用Alamofire 5和Codable在Swift 4中编写网络层:第2部分:使用Codable执行请求和解析

在上一部分中,我们为网络层创建了API路由器,实际上这是一个提供端点的enum 。 在这一部分中,我们将看到我们将如何使用Swift 4 Codable协议执行请求并解析JSON响应。 让我们开始定义数据模型并遵守Codable协议。 这是我们的User模型: 这是我们获取特定文章时的响应: 还要注意,在我们的Article模型中,我们使用的是自定义对象Category因此仅将Article声明为Codable是不够的,因为我们需要确保Article所有属性都符合Codable ,在这种情况下,标准库类型已经符合Codable但我们的自定义类型Category应符合Codable 。 这是Category模型的实现: 让我们向APIClient添加另一个请求。 让我们添加请求以获取文章列表。 我们的APIClient将如下所示: 我们在这里看到有两个参数queue和带有默认参数的decoder ,这就是为什么在我们的登录的第一个请求中,当我们调用responseDecodable ,我们刚刚传递了一个参数,即completionHandler 。 在我们的请求getArticles我们在调用responseDecodable时需要使用自定义JSONDecoder ,因为我们需要使用自定义格式来解析日期。 这提醒了JSON端点的JSON响应: 因此,为了帮助JSONDecoder知道如何解析日期,我们需要指定dateDecodingStrategy 。 我们首先需要创建一个DateFormatter : 现在,我们有了可以与Alamofire 5和Codable一起使用的功能齐全的网络层。 但是让我们重构我们的APIClient并避免重复代码: 我们刚刚创建了一个名为performRequest的新方法,该方法将在传递APIRouter和completion参数时执行请求。 同样,我们使传递自定义decoder成为可能。 现在,我们对APIClient感到满意,并且我们已经准备好使用完整的网络层。 这是完整的示例项目: AladinWay /网络示例 NetworkingExample –系列文章的Exampel项目:https://medium.com/@AladinWay/write-a-networking-layer… github.com 在本系列的下一部分中,我们将尝试改进APIClient并使用Future (有时也称为Promise )的概念,而不是我们现在使用的完成回调。 这将有助于更好地处理响应。 请随时发表评论并提出任何可能的改进,并请注意,我无法在“ Medium”上回答任何问题/评论。 相反,请在示例项目GitHub存储库中打开一个新问题: AladinWay /网络示例 NetworkingExample –使用Alamofire 5和Codable在Swift 4中编写网络层 github.com 请继续关注,不要忘了在下一部分出版后立即得到通知。 您可以在此处阅读下一部分: 使用Alamofire […]

如何使用迦太基在Xcode上安装Alamofire

Carthage是一个分散的依赖性管理器,可构建您的依赖性并为您提供二进制框架。 您可以使用以下命令将Carthage与Homebrew一起安装: $ brew更新 2. $ brew安装迦太基 3.在您的Cartfile文件中指定它: github“ Alamofire / Alamofire”〜> 4.7 使用创建汽车文件: 触摸Cartfile 您可以通过vim打开它,也可以通过运行xcode打开它: 打开-Xcode Cartfile 4. $ 迦太基更新 注意:此步骤可能存在错误。 如果你有 然后,恭喜你。 您只是说了另一个糟糕的Mac Bug。 解决方案在这里:https://stackoverflow.com/questions/40743713/command-line-tool-error-xcrun-error-unable-to-find-utility-xcodebuild-n 5. 将构建的Alamofire.framework拖到Xcode项目中。 我的意思是将其强制拖动到xcode左列目录(而不是文件夹)中。 而已。 我知道这很糟糕。 但是……然后拧紧它。 常问问题: 错误:dyld:未加载库:@ rpath / Alamofire.framework / Alamofire 通过确保框架显示在target-> general-> embedded binaries and linked Framework and Library部分下来解决此问题