api接口怎么写_面向声明式API编程(DAP)
DAP是Mars-java 最近提出的一個新的開發方式,全稱 Declarative API Programming, 提倡后端為一個獨立的整體,不應該是為前端服務的,所以當前端需要接口的時候,只需要聲明一個API給他,而不需要專門開發一個Controller出來
面向聲明式API編程(DAP)
按照傳統的開發方式,如果要開發一個后端接口,需要分為以下三步
但是,我們編寫一個接口,重點應該是放在業務邏輯上的,也就是說 我們的關注點應該在第二步,但是通常第一步和第三步的重復工作量讓我們感到窒息,所以我梳理了一下,制定了一個新玩法,這套新玩法就叫聲明式API
所以我們是這樣玩的
編寫業務邏輯
@MarsBean("testService") public class TestService {要返回的數據類型 selectListForName(參數1, 參數2, 參數3, 參數4){// 第一步 根據testDTO里的參數從xx表查詢需要的數據// 第二步 根據查出來的數據,去操作xx2表// 第三步 對前兩步的結果匯總,進行xxx操作return 數據(直接返回即可,會自動變成json);} }聲明一個API接口
@MarsApi public interface TestApi {Object selectList(TestVO testVO); }將api與業務邏輯關聯
@MarsApi public interface TestApi {@MarsReference(beanName = "testService",refName = "selectListForName")Object selectList(TestVO testVO); }對,你沒看錯,API的方法和他引用的那個方法,參數列表可以不一樣, 框架會自動把API的參數的值賦值到引用的那個方法的參數列表
引用的方法甚至可以無參,參數目前只支持自定義對象和Map
這套思想的核心是,把后端看作是一個獨立個體,并不是為服務前端而存在的, 后端就寫后端的業務邏輯好了,如果前端需要數據,那我們就開個門給他
這么做的好處,還可以散藕
- 通過更換MarsReference的配置,可以關聯到不同的業務邏輯
- 如果前端不需要這個接口了,直接無腦刪就好了,因為這只是一個抽象方法
- 后端專注業務邏輯就好了,不需要考慮跟前端互動,前端需要的時候開個門就好了
接下來怎么做
看到這里,大家肯定會有疑問,前端要怎么調用api,后端怎么操作數據庫? 這個就需要你們動動手指,去我的官網一探究竟
還可以做什么
首先聲明式API是對前后端交互方式的一次變革,省去了Controller。
其實這種風格在微服務里很常見,比如Dubbo的api, 既然微服務接口可以用interface來提供對外的服務,那么我們也可以把它用到http接口上吧。
很多java初學者在剛接觸分層架構的時候,肯定有過疑問,Service是干嘛的, 因為在某些場景下,這層跟DAO是很像的,而以后,他們再也不會有這種疑問了
除了聲明式API,我們還提供以下功能
實體類的爭議
本框架是強制要求,DAO用來接數據的實體類,字段名必須和表的字段名一致的, 這樣雖然提高了耦合,但是減少了映射的配置,并且實際情況是,如果你用別的框架, 你改了數據庫的字段名,你一樣要去改配置映射的那部分代碼,所以用映射來降低耦合并沒起到什么作用
不過爭議不再這一點上,而在于命名規范上,因為數據庫的字段名通常是下劃線分割單詞, 跟java的變量名常用的駝峰有點出入, 首先可以確定的是JVM官方對變量名的命名規范是支持用下劃線的, 并且常量都是這么做得,從沒出現過風險。
所以我總結了以下觀點
所以,我們為什么非要一成不變的把自己關在舊籠子里?
如果實在無法接受,我們也提供了解決方案,那就是用Map,然后在DAO層手工轉換成你的實體類。
官網
http://mars-framework.com
收藏 (1) 分享
總結
以上是生活随笔為你收集整理的api接口怎么写_面向声明式API编程(DAP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python基础之语句_P009 pyt
- 下一篇: word从第3页开始设置页码为第一页_写