iT邦幫忙

2023 iThome 鐵人賽

DAY 3
0

前情提要

昨天發文前,正在 Amplify 的 Data 建立 Model,但是,因為 API 的 Key 失效,所以無法更新 Model 😢。今天不斷踩坑,後來發現,還是要使用 amplify remove api xxx 刪除那個壞掉的資源後,再重跑一次 Data Model 的重建流程。

重建流程

  1. 在 Terminal 中,使用 Amplify 指令,刪除壞掉的 「API」
    amplify remove api BaoAnGongFisherAmp
    
  2. 在 Terminal 中,使用 Amplify 指令,部署此次的操作到 AWS Amplify
    amplify push
    
  3. 等待部署生效。
  4. 重建 Model (參考昨天文章),然後再 Deploy
  5. 看結果
    https://ithelp.ithome.com.tw/upload/images/20230905/201301491YZYIU30nc.png
  6. 這時候,用上圖中的指令,將剛剛做出來的 Model 程式碼都載回開發機上。
    amplify pull --appId db4m3l6l045o2 --envName dev
    
  7. 繼續再建出新的 Model,如 FishingSpot,之前在設計私房釣點功能的時候,直接取成 SecretLocation。 今年把它改成 Amplify Model 順便加入一些新的屬性給他。
  8. 不論從 Amplify Studio 或是 Termial 調整,都要透過部署的動作來使其生效。
  9. 下圖是成功建好 Model 後的畫面,看到綠勾勾頓時安心一半! 然後圈圈一的指令也是在提醒開發者,要記得在地端 amplify pull
    https://ithelp.ithome.com.tw/upload/images/20230905/20130149lpsLGV3nZJ.png
  10. Amplify Studio 會掉出對 Model 進行 CreateUpdateDeleteQuery 範例程式碼,讓你無痛開發。
    https://ithelp.ithome.com.tw/upload/images/20230905/20130149LPqgdyv0TG.png

AppSync 功能簡介

Model 做好了之後呢? 把收容資料的倉庫做好了之後,倉庫的門也一起被蓋好了!

  • 當在開發電腦上 amplify pull 完成後,用 amplify status 來看現在 Amplify 中部署了哪些東西,眼尖的你會發現多了 Api,這個東西實際上是 AWS AppSync

簡介

  • AWS AppSync 會建立無伺服器 GraphQL 和 Pub/Sub API,透過單一端點簡化應用程式的開發,以便安全地查詢、更新或發佈資料。 -- 官網寫的,機器翻譯得生硬,重點在 Single Endpoint
    • GraphQL APIAWS AppSync 建置的 GraphQL API 為前端開發人員提供從單一 GraphQL 端點查詢多個資料庫、微型服務和 API 的能力。
      https://ithelp.ithome.com.tw/upload/images/20230905/20130149a6tqEjm4a5.png
    • GraphQL API使用 AWS AppSync 建置的 Pub/Sub API,讓前端開發人員能夠透過無伺服器 WebSocket 連線,向訂閱的 API 用戶端發佈即時資料更新。
      https://ithelp.ithome.com.tw/upload/images/20230905/20130149hgSt4DLZNX.png
  • 單一端點,應該就是上面兩個圖的橘色框框了,左邊可以是不同型態的來源請求。

在 GraphQL 和 REST 之間做選擇

https://ithelp.ithome.com.tw/upload/images/20230905/20130149ueHLS539DN.png

  • 有時候不是喊一句: 「小孩子才做選擇、我全都要!」 就能解決。

我簡單比喻 REST API 就好比一家不能單點的麥當勞,在你進到這家店的時候,他們只提供固定的套餐點餐方式,但你卻只想吃薯條,那附帶的可樂跟大麥克漢堡,都是多餘的。

  • 再來又好比下列情境

一樣還是那間不能單點的麥當勞,當你想吃薯條跟蘋果派,但是卻沒有一種套餐同時含有這兩項。你逼不得已,只好先點一個含有薯條的套餐、再點一個含有蘋果派的套餐,剩下的東西通通都是多餘的。

  • 麥當勞的商品越來越多,套餐設計卻無法滿足每個人,所以,世界上需要另一種,全部都可以單點的麥當勞。這就是 GraphQL 的一大特色。

Ref

https://docs.aws.amazon.com/appsync/latest/devguide/security-authz.html


上一篇
【Day 2】 DataStore:在 AWS Amplify 建立 Model
下一篇
【Day 4】 汰舊換新:以 Amplify 範例替換 ViewModel
系列文
依然無法成為釣魚大師也要努力摸魚!!辣個吃魚神器 APP 第二彈33
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言