後端API適合共用APP與WEB嗎?

先說結論:不建議。

因為會出現以下問題:

  1. 開發時程問題:因網站改API,APP就必須要更新API。
  2. 難同時開發:可能先做完WEB才會做APP,或反過來,彼此資料也差異大。
  3. 難同時滿足兩者:畫面差異大,後端不知道APP或WEB要底要哪種基礎資料,可能少或多給。
  4. 討論時間拉長:因為第3點肯定會延長開會討論,也延遲到開發。

此外,如果APP要向下支援,不強制更新,那會需要API版號,如v1、v2…等,可以塞在header裡面。
而向下支援可能就會有資料庫table異動與欄位被刪,像是沒辦法新增、編輯,這時僅能提示使用者安裝新版本了。
如果v1版要跟v100版間要相容肯定會處理的蠻崩潰的。

基於以上理由,WEB、APP分兩組API是比較好長期維護、開發的方法。

最後不推graphQL,個人工作經驗只會讓專案變得難以維護。
然後API一定要RESTful嗎?
這也不一定,有時分權而難以限定權限,就會有漏洞。反而增加開發風險。
雖然有人會覺得RESTful就是主流,潮。但然後呢…。Restful很簡潔,能讓知道這模式的人容易上手,但是否必要要看開發者所在的環境而定。
可參考以下參考資料,有篇提到KISS (Keep It Simple, Stupid)。

參考資料
https://www.ptt.cc/bbs/Soft_Job/M.1624876117.A.086.html
https://blog.darkthread.net/blog/is-restful-required/