《電子技術應用》
您所在的位置:首頁 > 人工智能 > 業(yè)界動態(tài) > 通用 API 并不能很好地服務于前端

通用 API 并不能很好地服務于前端

2021-11-05
來源:CSDN
關鍵詞: API 前端

  為什么不行?

  在設計通用 API 時,你會遇到一系列鬧心的問題:

  如何預測和支持所有可能的工作流程?

  如何避免某些蹩腳的工作流程中的 N+1 問題?

  如何測試每個可能出現(xiàn)的請求的功能、性能和安全性?

  如何在不破壞現(xiàn)有工作流程的情況下修改某個 API?

  如何根據(jù)內部和社區(qū)的需求,劃分修改 API 的優(yōu)先級?

  如何完善文檔,以方便各方順利完成工作?

  從前端的角度來看,還有更多問題需要考慮:

  如何收集渲染頁面所需的所有數(shù)據(jù)?

  如何優(yōu)化發(fā)往多個端點的多個請求?

  如何避免以預期之外的方式使用 API 數(shù)據(jù)字段?

  如何權衡新功能與構建新 API 的成本?

  如果只是為了前端而構建后端,你需要考慮這么多問題嗎?你需要考慮每一種可能的工作流程,避免 N+1 請求問題,測試每個請求配置?還是應該拒絕某些功能,因為你非常清楚每個頁面需要呈現(xiàn)什么?看到這里,你可能明白我想說什么了。

  建議

  我建議不要將前端視為某個通用 API 的客戶端,應將其視為應用的一半。

  假設你可以把整個頁面所需的 JSON 全部發(fā)送給前端。那么只需要創(chuàng)建一個端點/page/a,然后渲染/page/a的整個JSON就可以了。而且,每個頁面都應該采用相同的做法。不要強迫前端開發(fā)人員發(fā)送一堆單獨的請求來渲染復雜的頁面。不要人為地制造的限制。

  這個 JSON 需要負責渲染整個頁面。不要渲染抽象模型和集合,而是應該渲染具體的方框、小節(jié)、段落、列表等。渲染可視化頁面結構。

  {

  “section1”: {

  “topBoxTitle”: “Foo”,

  “l(fā)eftBoxTitle”: “Bar”,

  “l(fā)inkToClose”: “https://…”

  },

  “section2”: {

  …

  }

  }

  這與服務器驅動 UI 類似,但不完全相同。我們可以稱之為服務器通知 UI。

  哪種方法更好?

  看到上面那些繁雜的考慮事項了嗎?設計前端專用的 API 就不會為這些問題鬧心了。

  你可以自由決定:我想要一個頁面A。然后只需在后端和前端實現(xiàn)頁面A。非常簡單。

  我們無需再考慮:必須引入哪些 API 工作流程,才能成功地渲染這個頁面?頁面 A 的實現(xiàn)非常簡單,只需要實現(xiàn)頁面本身的功能。你可以完整地測試頁面A,檢查 Bug、安全和性能問題。你甚至可以通過一個大型 SQL 查詢語句,獲取頁面 A 所需的所有數(shù)據(jù)。你可以將頁面 A 的整個 JSON 放入緩存。

  前端非常清楚頁面 A 中每個字段的用途。這些字段沒有歧義,它們準確地代表了前端的需求。

  當需要修改頁面 A 時,你只需徑直打開頁面 A,完成修改就行了,無需花大把時間開會討論如何修改后端 API 才能實現(xiàn)前端的變更。這個 API 只服務于頁面 A,不需要精心設計服務多個請求。只有這樣,我們才能擺脫自我強加的限制。

  此外,業(yè)務邏輯可以全部交由后端負責,無需在前端和后端之間的分工上浪費精力。前端可以專心呈現(xiàn)頁面,而后端則可以專心實現(xiàn)前端所需的內容。目標明確,不是嗎?

  如何實踐?

  我曾在多個生產項目中嘗試過這種做法。其中有一個是個人的項目,還有一個是在公司現(xiàn)有項目的基礎之上進行的重構。我們整個團隊都參與了那個項目,而且效果很好。我們遇到的唯一問題就是,前端的工作越來越無聊,因為幾乎所有的業(yè)務邏輯都由后端負責。同時,后端團隊也沒有感覺到太大壓力。而且大多數(shù)時候,我們談論的都是業(yè)務相關的內容,而不是代碼。

  當然,很多人不太贊同這種做法,常見的反對意見如下。

  我希望前端自由(或者,我希望前端解耦)!

  不要自欺欺人了,通用 API 并沒有賦予前端真正的自由。為了渲染一個頁面,需要發(fā)送 7 個請求,這不是自由。這是為了滿足基本的要求而作繭自縛。一旦需求發(fā)生變化,后端也必然需要變更。這樣的自由都是偶然的,而且大多是發(fā)生在錯誤的地方。

  如果真的想讓前端團隊自由,直接在 Postgres 上安裝一個 GraphQL 包裝器,就可以了。

  我們本來就需要通用API,這樣不是一箭雙雕嗎?

  不,其實你沒有必要公開這些 API。真正到了發(fā)布的時候,你可能會想:“也許我不應該公開這些API”。通用 API 與前端專用API 的變更有非常大的不同。公開 API 需要支持客戶端的工作流程。而前端專用 API 可以隨意變更。沒有困難,就不要制造困難了。

  如果給每個頁面構建JSON,那么邏輯代碼該如何重用?現(xiàn)在的 CRUD 控制器中大量的邏輯代碼都是重用的!

  如果編程語言允許,完全可以重用邏輯。你可以使用 mixins、組合、繼承,以及其他任何方式。如果能建立良好的抽象,就像樂高積木一樣,只需要將積木搭建起來就可以了。

  通用 API 可以在移動應用中重用!

  通常移動應用都有不同的頁面,其中包含的信息和結構不同,變更的原因也不同。專門針對各個頁面構建一個后端,可以節(jié)省很多時間。

  如果頁面需要部分XHR 更新怎么辦?始終返回整個頁面嗎?

  創(chuàng)建一個只返回特定數(shù)據(jù)的端點也是沒問題的。你完全可以針對頁面特定部分的數(shù)據(jù)建立一個端點。在頁面最初加載的時候渲染 React 組件,然后通過調用這些端點的 XHR 更新各個組件。但是,只有某些頁面有這樣的需求時,才有必要引入這些端點。這是特殊的處理,一般不需要實現(xiàn)。

  我的前端是一個SPA,只需要一部分數(shù)據(jù),不需要整個頁面。

  即便是部分數(shù)據(jù),也可以作為部分頁面結構提供給前端,不需要作為通用資源。只要后端能夠滿足前端的需求即可。

  我正在構建一個站點構建器,所以前端實際上只是站點構建器 API 的測試。

  這是一種正確的用法,加油!

  你有數(shù)據(jù)支持這種做法嗎?

  我希望能夠收集到這樣的數(shù)據(jù),然而,我們很難準確地衡量。誰會同時針對一個軟件長期維護兩個架構,然后比較二者的效果?本文表達的只是我個人的經歷。




本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
欧美激情办公室aⅴ_国产欧美综合一区二区三区_欧美午夜精品久久久久免费视_福利视频欧美一区二区三区

          亚洲一级特黄| 亚洲激情网址| 国产日韩欧美在线播放不卡| av不卡在线| 男人天堂欧美日韩| 欧美日韩高清在线一区| 黑丝一区二区三区| 亚洲欧美日韩国产一区| 欧美三级免费| 亚洲欧美日韩视频二区| 亚洲无线一线二线三线区别av| 一区二区冒白浆视频| 欧美1区3d| 国产日韩综合| 亚洲小说区图片区| 久久久久久久欧美精品| 亚洲精品九九| 欧美日韩国产三区| 久久福利精品| 亚洲精品孕妇| 国产精品a久久久久| 久久xxxx精品视频| 99精品视频免费观看视频| 国产精品www.| 午夜天堂精品久久久久| 久久不射网站| 国产伦精品一区二区三区视频黑人 | 麻豆91精品| 99av国产精品欲麻豆| 国产精品久久久亚洲一区| 欧美三级黄美女| 欧美1区视频| 久久午夜视频| 久久综合激情| 欧美福利网址| 欧美日韩精品免费看| 欧美日韩精品不卡| 国产专区一区| 欧美日韩影院| 欧美日韩国产综合在线| 午夜天堂精品久久久久| 欧美一区亚洲二区| 欧美日韩国产高清| 国产精品啊啊啊| 欧美色图麻豆| 好看不卡的中文字幕| 久久久精品网| 欧美在线3区| 欧美精品一区二区三区久久久竹菊| 欧美一区二区视频在线| 欧美精品免费观看二区| 欧美精品一卡| 亚洲一二区在线| 一本色道久久精品| 免费亚洲婷婷| 欧美ab在线视频| 亚洲婷婷免费| 国产精品欧美久久| 久久精品日韩欧美| 国内综合精品午夜久久资源| 亚洲欧洲一二三| 亚洲专区免费| 欧美日韩网址| 亚洲色图自拍| 久久精品欧美| 亚洲第一在线综合在线| 国产伦精品一区二区三区视频孕妇| 亚洲一区二区在线免费观看| 亚洲欧美综合国产精品一区| 亚洲黄色精品| 另类图片国产| 在线不卡亚洲| 久久久精彩视频| 在线观看不卡| 久久综合亚州| 亚洲精品看片| 欧美精品一区二区视频| 在线亚洲激情| 海角社区69精品视频| 免费不卡亚洲欧美| 亚洲人成人一区二区三区| 美女91精品| 亚洲作爱视频| 国产综合亚洲精品一区二| 国产一区二区三区免费不卡| 欧美激情一区| 亚洲欧美日韩专区| 亚洲国产日韩综合一区| 欧美二区在线| 久久另类ts人妖一区二区| 亚洲成色www久久网站| 久久综合九色综合久99| 国产女优一区| 亚洲美女毛片| 伊人成人在线| 国内精品99| 亚欧美中日韩视频| 国产精品久久久久久久久久妞妞| 亚洲一级影院| 国自产拍偷拍福利精品免费一| 欧美一区综合| 久久久久国产精品一区二区| 国产精品一区免费观看| 日韩网站在线| 亚洲精品在线视频观看| 伊人久久亚洲热| 欧美日韩精品免费看 | 国产精品porn| 欧美国产激情| 久久夜色精品| 欧美粗暴jizz性欧美20| 亚洲欧美日韩国产一区| 国产欧美69| 一本久道久久综合婷婷鲸鱼| 禁久久精品乱码| 亚洲视频一区| 国精品一区二区| 精品不卡在线| 亚洲欧洲精品一区二区三区波多野1战4 | 伊人久久婷婷| 亚洲第一黄色| 亚洲青色在线| 国产精品视频福利| 麻豆精品网站| 欧美日韩理论| 亚洲精品免费观看| 国产精品一区二区你懂得| 免费中文字幕日韩欧美| 欧美欧美全黄| 亚洲激情精品| 久久国产精品一区二区三区| 久久免费高清| 欧美日韩亚洲一区二区三区在线观看| 欧美人成在线| 亚洲欧美综合一区| 欧美日韩调教| 亚洲欧美亚洲| 精品999网站| 国产欧美一级| 欧美有码视频| 亚洲午夜精品久久| 亚洲一区二区三区午夜| 欧美日韩三级电影在线| 国内精品亚洲| 国产精品女主播一区二区三区| 久久久久天天天天| 亚洲第一伊人| 久久久久久精| 夜久久久久久| 欧美精品一区三区在线观看| 99亚洲精品| 欧美在线91| 99国产精品| 欧美日韩少妇| 午夜亚洲伦理| 在线日本成人| 欧美日韩国产高清| 亚洲一区二区三区高清不卡| 国产精品videosex极品| 亚洲免费网站| 亚洲欧洲一二三| 欧美日韩一卡| 久久婷婷激情| 一本一道久久综合狠狠老精东影业| 99综合精品| 欧美日韩亚洲一区在线观看| 亚洲一区影院| 亚洲色诱最新| 亚洲精品在线视频观看| 亚洲午夜精品久久| 欧美精品啪啪| 欧美激情麻豆| 久久综合九色99| 免费久久99精品国产自在现线| 99热精品在线| 亚洲美女黄色| 亚洲黄色视屏| 亚洲欧洲日本一区二区三区| 国内成人在线| 好吊色欧美一区二区三区视频| 欧美一区三区二区在线观看| 久久精品五月婷婷| 翔田千里一区二区| 久久国产精品久久久久久电车| 国产精品乱看| 亚洲欧美日韩视频二区| 亚洲欧美日韩在线综合| 久久成人国产| 久久久久久婷| 欧美性久久久| 136国产福利精品导航网址| 狠狠综合久久av一区二区老牛| 欧美午夜精品| 亚洲高清自拍| 国产亚洲激情| 久久婷婷国产综合尤物精品| 久久久久久穴| 国产精品二区在线观看| 亚洲高清视频一区| 国产日韩综合| 久久国产精品高清| 老牛影视一区二区三区| 国产一区二区无遮挡| 亚洲性图久久| 国产欧美激情| 久久久久久亚洲精品杨幂换脸| 欧美伊人影院| 亚洲手机在线| 国产女主播一区二区| 久久免费一区| 国产一区欧美| 国产精品一区二区a| 欧美影院一区| 国产乱人伦精品一区二区| 好吊日精品视频| 亚洲欧洲午夜| 久久久久国内| 亚洲国产免费看| 男女精品网站| 亚洲国产一区在线| 久久久久99| 在线观看一区欧美| 亚洲一卡久久| 狠狠入ady亚洲精品| 国产精品区一区| 欧美日韩一区在线播放| 国产欧美日韩在线播放| 女女同性女同一区二区三区91 | 亚洲一区高清| 欧美日韩在线观看一区二区三区| 一本色道久久综合亚洲精品不卡| 欧美一区二区三区久久精品茉莉花 | 亚洲欧美日韩另类精品一区二区三区| 久久青青草原一区二区| 亚洲第一黄网| 欧美不卡三区| 六月婷婷久久| 日韩亚洲在线| 伊人久久亚洲影院| 欧美精品一级| 久久综合久久久| 99视频+国产日韩欧美| 亚洲欧美一区二区原创| 午夜亚洲伦理| 一本色道88久久加勒比精品| 激情av一区| 欧美精品成人| 欧美国内亚洲| 你懂的成人av| 亚洲一区激情| 美女久久一区| 日韩亚洲一区在线播放| 亚洲小说欧美另类婷婷| 欧美激情第8页| 玖玖在线精品| 久久在线91| 久久一二三四| 久久久久久黄| 久久精品一区二区国产| 久久99伊人| 模特精品在线| 麻豆9191精品国产| 亚洲一区二区三区在线观看视频| 亚洲精品综合| 中日韩男男gay无套| 亚洲国产日韩欧美| 亚洲福利精品| 亚洲美女91| 久久xxxx| 亚洲影院在线| 久久激情一区| 欧美韩日精品| 欧美天天视频| 精品动漫3d一区二区三区免费| 国内精品嫩模av私拍在线观看| 国产精品大片| 亚洲乱码视频| 香蕉精品999视频一区二区| 久久久久高清| 欧美a级在线| 国产一区美女| 国产欧美日韩一区二区三区| 久久不射网站| 欧美视频导航| 亚洲精品韩国| 先锋影音久久| 欧美日韩精品免费看| 亚洲久久一区| 久久久精品性| 亚洲国产精品123| 午夜在线精品偷拍| 欧美日韩视频一区二区三区| 亚洲国产欧美日韩| 免费视频一区| 一区在线免费观看| 国产精品久久777777毛茸茸| 女女同性女同一区二区三区91 | 你懂的一区二区| 在线欧美一区| 久久精品中文字幕一区二区三区| 在线一区欧美| 欧美精品一区三区在线观看| 在线国产欧美| 欧美专区18| 亚洲国产精品久久久久婷婷老年| 亚洲欧美久久久久一区二区三区| 欧美人成网站| 翔田千里一区二区| 在线日本高清免费不卡| 久久精品导航| 国产人成精品一区二区三| 欧美婷婷在线| 狼狼综合久久久久综合网| 在线视频精品一区| 国产精品xvideos88| 亚洲欧美国产不卡| 亚洲欧洲日本mm| 国产精品jizz在线观看美国| 性色一区二区三区| 99精品免费视频| 韩国欧美一区| 久久久久久久久久久久久久一区| 亚洲精品社区| 一区二区三区我不卡| 久久综合中文| 久久久精品网| 乱码第一页成人| 午夜一区不卡| 欧美亚洲免费在线| 亚洲中字在线| 国产精品一页| 国产一区二区三区久久| 亚洲精品影院| 亚洲精选久久| 亚洲久久成人| 亚洲国产免费| 亚洲区国产区| 9国产精品视频| 亚洲精华国产欧美| 亚洲国产精品久久久久久女王 | 欧美一区激情| 欧美在线二区| 欧美日韩四区| 国内一区二区三区| 国内精品亚洲| 在线国产欧美| 夜久久久久久| 国产精品区二区三区日本| 国产一区二区高清| 裸体丰满少妇做受久久99精品 | 欧美三级网页| 狠狠综合久久| 亚洲国产电影| 中文精品视频| 久久精品二区三区| 欧美人成网站| 在线欧美福利| 国产精品视区| 久久久综合网| 狠狠色狠狠色综合日日tαg| 日韩一级欧洲| 久久久久在线| 极品日韩久久| 亚洲一区日韩在线| 欧美在线不卡| 亚洲精选成人| 久久亚洲美女| 1024日韩| 久久先锋资源| 亚洲精品一区二区三区蜜桃久| 国产精品外国| 欧美大片专区| 国产欧美日本在线| 欧美国产激情| 国产日韩欧美一区在线 | 在线亚洲欧美| 欧美 日韩 国产一区二区在线视频| 国产一区二区三区无遮挡 | 亚洲国产精品一区二区第四页av| 一本色道久久综合亚洲精品高清| 久久国产日韩欧美| 亚洲国产激情| 欧美激情第10页| 国产精品丝袜xxxxxxx| 国产自产精品| 久久久久久久久久久久久久一区| 亚洲第一毛片| 欧美全黄视频| 久久精品一区| 99国产一区| 精品999成人| 国产精品最新自拍| 国产精品大片| 亚洲欧美日韩精品综合在线观看| 欧美日韩第一区| 国产日韩欧美一区| 国产精品v亚洲精品v日韩精品| 国产精品日本| 在线观看日韩av电影| 久久久夜精品|