在開(kāi)發(fā)中,前端希望根據(jù) UI 來(lái)劃分接口,這樣用戶(hù)體驗(yàn)好,前端實(shí)現(xiàn)也容易。后端希望根據(jù)業(yè)務(wù)模塊劃分接口,這樣有利于服務(wù)下沉和解耦。前端和后端間可能會(huì)有的對(duì)話(huà):
后端: 你多調(diào)幾個(gè)接口不就行了么~
前端: 多好幾個(gè) HTTP 請(qǐng)求呢。包成一個(gè)接口有這么難么?
前端同學(xué)和后端同學(xué)都有各的道理。如果前后端都不肯讓步,怎么辦?
BFF 能解決這種問(wèn)題。
BFF 介紹
BFF 是 Backend For Frontend(服務(wù)于前端的后端)的簡(jiǎn)稱(chēng)。BFF 就是后臺(tái)服務(wù)與前端間加一適配層:提供對(duì)前端友好的接口。BFF 做的具體的事包括:
- 聚合后端服務(wù)。將多個(gè)接口聚合成一個(gè),提升前端性能。
- 數(shù)據(jù)裁剪。只返回不同端需要的數(shù)據(jù),不返回多余數(shù)據(jù)。BFF 只需支持 GraphQL 即可支持返回前端需要的數(shù)據(jù)形狀。
- 數(shù)據(jù)格式化。
BFF 代碼誰(shuí)來(lái)開(kāi)發(fā)呢?遵循服務(wù)自治,誰(shuí)使用誰(shuí)開(kāi)發(fā)的原則,是前端~
BFF 能降低前后端的溝通成本。前端在寫(xiě) BFF 的過(guò)程中,會(huì)調(diào)后端的服務(wù),就越來(lái)越懂業(yè)務(wù)了。同時(shí),前端離全棧又進(jìn)了一步~
用 BFF,和后端做朋友~