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
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/305236.html
標籤:其他
下一篇:MPAndroidChart詳解
