接API

缘由:

接API大概是在科技业的面试时最常问的问题了吧,但老实说资料的复杂性能不能接得正确好像才是关键,但假如单纯只是要回答会或不会的问题,再怎麽科技业菜鸟,一定是回答”会“的吧~~但对於面试官来说,会或不会其实满一翻两瞪眼,接接看就知道了~以下我们来试接看看,假如有什麽写错的地方,再请指教我~感恩

实作:

找到一些政府公开资讯,这边我们使用
https://cloud.culture.tw/frontsite/trans/SearchShowAction.do?method=doFindTypeJ&category=4
我们可以看到里面是json档案
将资料丢到https://jsoneditoronline.org/ 上查看树状结构,如下图
https://ithelp.ithome.com.tw/upload/images/20210917/20130757FwlGJ3ow95.png
然後想想我们需要什麽资料,这边我们要呈现版本号(version)、UID、标题(title)、展览资讯(showInfo)、展览说明(descriptionFilterHtml)
根据树状图很清楚地看到资料分层的状态,除了展览资讯可以再往下展开外,其他皆为单层结构,
所以在定义Codable结构时(Codable 是 Encodable 和 Decodable 协议的类型别名),
只有展览资讯需要使用字典来解,如下所示:

//政府公开资讯 -艺文类
struct govOpenData: Codable {
   let version:String
   let UID:String
   let title:String
   let placeinfo:[[String:String?]]
   let description:String

   //在struct内列举,一定要写成enum CodingKeys: String, CodingKey
   enum CodingKeys: String, CodingKey {
       case version
       case UID
       case title
       case placeinfo = "showInfo"
       case description = "descriptionFilterHtml"
   }

}

接着要来拷贝资料了,当然有很棒也很好用的套件,例如:Alamofire等,可以拷贝api资料,
但我们这边示范先用swift内建的方法,写法如下:

let urlStr3 = "https://cloud.culture.tw/frontsite/trans/SearchShowAction.do?method=doFindTypeJ&category=4"
if let url = URL(string: urlStr3) {
   URLSession.shared.dataTask(with: url) { data, response , error in
       if let data = data {
           do {
               let openDatas = try JSONDecoder().decode([govOpenData].self, from: data)
               print("公开资料\(openDatas)")
           } catch  {
               print("错误\(error)")
           }
       }
   }.resume()
}

<<:  Day 19 - Execution Context

>>:  [day8] 实务搭建 - 储值卡,系统概述

Day10 Collectionview小实作4

紧接着昨天~ 我们写了一个func 并且利用结构加入阵列的方式写入每个变数的字串以及图片。 而後在生...

Day11|【Git】档案管理 - 重新命名档案 git mv

延续上篇的说明,在 Git 的世界,任何动作对 Git 来说都可以视为一个「修改」的动作。因此这篇要...

[Day 10] 第一主餐 pt.3-Djgnao与网页间的连结

在上一篇我们成功建立了django专案 今天我们就要来加上一些东西,并且让我们的django跑起来啦...

DAY26-JAVA的Runnable介面

如果类别本身已经济成某个妇类别,但现在又要继承Thread类别来建立执行绪,马上就会面临到一个问题-...

[前端暴龙机,Vue2.x 进化 Vue3 ] Day20. 『小专题◕ᴥ◕』 Vue 旅游小帮手(一)

话说~ 从疫情到现在,已经不知道多久没出去玩了~ 好想出去玩玩喔~ 从开赛到现在已经默默地来到第二...