当前位置:首页 » 《随便一记》 » 正文

IOS15之swift的Alamofire 5.4框架的网络封装_A1521315qwss的博客

6 人参与  2022年03月03日 17:23  分类 : 《随便一记》  评论

点击全文阅读


IOS15之swift的Alamofire 5.4框架的网络封装

此Alamofire 版本较高,是基于IOS15 和最新的 Alamofire 5.4.4 版本,截止我发稿的时候,最新版本,网上其他框架的版本较低,api早就淘汰了,或者其他写法,(对回调函数所使用到的关键字@escaping)要重点掌握
后台我采用Java 的springBoot进行封装测试的。
涉及swift基础语法,cocoaPods的使用,swift的闭包,回调,swift5.5语法新特性,单例模式的使用等,类方法的定义,Alamofire 的get,post,put ,delete请求,带参数,或者不带参数,都要拿捏的非常准备到位
在这里插入图片描述
在这里插入图片描述

	//
//  NetworkTools.swift
//  Alamofire1
//
//  Created by lujun on 2021/10/2.
//

import UIKit
import Alamofire

enum MethodType {
    case GET
    case POST
}

class NetworkTools{
    //类方法
    class func requestData(type: MethodType,urlString: String, parameters: [String : Any]? = nil,finishedCallback : @escaping ( _ results : Any) -> ()){
//        let type1 = type==MethodType.GET ? ".get" : ".post"
        if(type==MethodType.GET){
            Alamofire.AF.request(urlString).responseJSON { (response) in
                switch response.result {
                case .success(let json):
                    finishedCallback(json)
                    break
                case .failure(let error):
                    print("error:\(error)")
                    break
                }
            }
        }
        if(type==MethodType.POST){
            Alamofire.AF.request(urlString, method: .post, parameters: parameters).responseJSON { (response) in
                switch response.result {
                case .success(let json):
                    finishedCallback(json)
                    break
                case .failure(let error):
                    print("error:\(error)")
                    break
                }
            }
        }
    }
    //类方法
    class func requestDataWithParam(type: MethodType,urlString: String, parameters: [String : Any],finishedCallback : @escaping ( _ results : Any) -> ()){
        AF.request(urlString, parameters: parameters).responseJSON { (response) in
            switch response.result {
            case .success(let json):
                finishedCallback(json)
                break
            case .failure(let error):
                print("error:\(error)")
                break
            }
        }
    }
}

测试代码如下:

//
//  ViewController.swift
//  Alamofire1
//
//  Created by lujun on 2021/10/2.
//

import UIKit
import Alamofire

class ViewController: UIViewController {
    /*
     AF.request("https://httpbin.org/get").responseJSON{ (response) in
            guard let result = response.value else{
                print(response.error ?? "")
                return
            }
            print(result)
        }
     */
     override func viewDidLoad() {
        super.viewDidLoad()
        NetworkTools.requestDataWithParam(type: .GET, urlString: "http://localhost:8081/demo3",parameters: ["sn":"lujun"]) { result in
            print(result)
        }
    }
    func getRequest(){
        let url = "https://httpbin.org/get"
        Alamofire.AF.request(url).responseJSON { (response) in
            switch response.result {
            case .success(let json):
                print(json)
                // Success in request and do a async or sync(NOT UI) task here.
                break
            case .failure(let error):
                print("error:\(error)")
                break
            }
        }
    }
    func postRequest(){
        let url = "https://httpbin.org/post"
        Alamofire.AF.request(url, method: .post, parameters: ["name":"jack","password":"123456"]).responseJSON { (response) in
            switch response.result {
            case .success(let json):
                print(json)
                break
            case .failure(let error):
                print("error:\(error)")
                break
            }
        }
    }
    
}


Java 后台

package com.example.demo.controller;
import com.example.demo.dao.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
public class DemoController {
    @GetMapping(value = "/demo")
    public String test2(String sn){
        System.out.println(sn);
        return "test";
    }
    @GetMapping(value = "/demo3")
    public Object test23(String sn){
        Map m1 =  new HashMap<String,Object>();
        System.out.println(sn);
        User user = new User("lujun", 18, "123@qq.com");
        m1.put("u1",user);
        return m1;
    }
}

项目文件名在我的资源文件下。名称是Alamofire1.zip


点击全文阅读


本文链接:http://zhangshiyu.com/post/35703.html

版本  方法  封装  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1