API優先(API-first)是一個壞主意! - stilkov
許多企業IT部門已成為“ API優先”策略的忠實擁護者。我認為總的來說,這是一個壞主意。
當您開始使用API時,您必須非常瞭解API使用使用者的需求。API優先則可能導致你不會這樣做,取而代之的是,您嘗試提出“顯然”可以重用的東西,最後得到甚至沒有用的東西。
最常見的是,API受其封裝的基礎系統功能的影響,如果這些封裝很棒,那就太好了,但通常不是。
API優先策略的假設前提是:透過“僅僅編排”API公開的功能來構建出色的應用程式。對於某些應用程式是正確的,但對於許多應用程式卻不是,通常對於出色的應用程式而言並非如此。
除非API是您提供給外部客戶的實際產品,否則透過在終端使用者和業務邏輯之間放置API邊界(以及由此產生的Conway法則影響)而建立的人為鴻溝會帶來很多痛苦,並且幾乎沒有價值。
在許多情況下,以API為中心的策略標誌著戰略者不希望面對實際的終端使用者及其需求。建立其他人必須組裝的可重用服務要容易得多,甚至為此建立元策略也要容易得多。
我將現代企業IT戰略中的大部分災難歸咎於這樣的事實,就是像我這樣的人:後端架構師對UI / UX方面的關注太少了,因為這些架構師被控制得太久了。
您需要一種用於模組化應用程式交付的策略,不僅要包括終端使用者的需求,還要從終端使用者的需求開始。API是達到此目的的一種有意義的手段。
如果您將API作為產品(例如,作為SaaS提供程式)提供,則將開發人員視為終端使用者。如果不是這種情況,那麼:您的終端使用者不在乎API,因此您不應將它們放在中心地位。
眾說紛紜:
完全同意。我從事付款工作。我們引入了一套付款API,在引入ux / ui時的第一個試驗就完全失敗了。使用者要做的第一件事是驗證帳號,但API不能驗證帳號。
如果您曾經遇到過《 Hyrum定律》中提到的問題,那麼API優先甚至意義不大:/->合同中的承諾無關緊要,系統中所有可觀察到的行為都將取決於某人。 https://hyrumslaw.com
我一直相信客戶會推動API的發展。一切都是由客戶端的驅動來詢問客戶。自下而上的設計很容易出錯。
IT無法構建滿足需求/期望結果的東西並不是什麼新鮮事。工具,技術和體系結構發生了變化,但問題仍然令人沮喪。
所有內容都是正確的。但是,我遇到的許多API-First練習者都是與利益相關者共享模擬,並儘可能早地模擬現實世界實現中發生的一切。不確定為什麼API-First意味著沒有UI /終端使用者參與嗎?
我對“ api優先”的思考方式更多地是“ api消費者優先”。api必須說出消費者的語言,並滿足消費者的需求。這與自下而上的設計形成鮮明對比,後者在後端定義了資料模型和粒度。
基於實體的CRUD服務應遵循標準模式。查詢方面需要針對用例進行定製,以便消費者可以輕鬆訪問需要的資料。簡介:構建支援您的用例的API,而不是後端服務可以提供的API。
大多數企業並未意識到..必須關注使用者和使用者需求,什麼時候構建或什麼時候不構建基於API的生態系統?這種區分對待是很重要的。
banq評:這也是體現DDD和物件導向不同之處,物件導向重在封裝和重用,但是如果沒有上下文,這種封裝和重用可能是短視的,只從封裝和重用角度設計API,這種API優先設計法肯定會有問題。DDD和OO是有區別的:抽象名稱選擇很重要?
DDD+微服務==>API,將業務領域的能力共享給消費者,消費者可以根據UI/UX要求組合有選擇性的使用這些能力,API沒有提供的功能表示其能力有限,或超過其能力範圍。
相關文章
- 【轉載】微服務是個壞主意嗎?微服務
- 為什麼說集中管理資料是個壞主意?
- 什麼是“API 優先”方法? - wixAPI
- Redis ORM是一個可怕的主意嗎? -DEV社群RedisORMdev
- 為什麼JVM平臺對於無伺服器FaaS來說是個壞主意? - frankelJVM伺服器
- API優先方法的完整指南 - ITNEXTAPI
- 那麼,不抽角色的日式手遊是個好主意嗎?
- 同一個元素中有多個class,優先順序
- 學《動森》在遊戲里加入「炒股」,是個好主意嗎?遊戲
- 為何說「換電」不是個好主意?
- 先發一個
- 瞧瞧別人家的API介面,那叫一個優雅API
- 深度優先與廣度優先
- 十、深度優先 && 廣度優先
- Ocelot一個優秀的.NET API閘道器框架API框架
- Java程式設計師:這是一個最好的時代,也是一個最壞的時代Java程式設計師
- 關於Java Chassis 3的契約優先(API First)開發JavaAPI
- 一個網站多個域名的好處與壞處是什麼?白狐公羊SEO網站
- 使用Spring Boot和Swagger進行API優先開發 - reflectoring.ioSpring BootSwaggerAPI
- 廣度優先與深度優先類似嗎? - Mario
- FRAM是車載儲存的優先選擇物件?物件
- 一款手遊“拯救”一個IP?《高達破壞者Mobile》是怎麼做到的
- 看看人家那後端 API 介面寫的,那叫一個優雅!後端API
- 自走棋手遊前瞻:產品優先or市場優先?
- API Star:一個 Python 3 的 API 框架APIPython框架
- 張小龍:用停留時長衡量一個APP的好壞是錯誤的!APP
- PHP優先佇列PHP佇列
- 深度優先搜尋
- CSS優先順序CSS
- js實現深度優先遍歷和廣度優先遍歷JS
- AI研究中數學和演算法哪個優先?AI演算法
- 如何判斷一個數倉模型的好壞?模型
- NG負載訪問 沒有權重優先第一個(根據自己的主域名訪問兩個域名中的一個)負載
- Qshutdown – 一個先進的關機神器
- 圖的遍歷:深度優先搜尋與廣度優先搜尋
- 01揹包優先佇列優化佇列優化
- 優化程式碼中的“壞味道”優化
- 實現一個jQuery的APIjQueryAPI