日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

api接口怎么写_面向声明式API编程(DAP)

發布時間:2024/9/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 api接口怎么写_面向声明式API编程(DAP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DAP是Mars-java 最近提出的一個新的開發方式,全稱 Declarative API Programming, 提倡后端為一個獨立的整體,不應該是為前端服務的,所以當前端需要接口的時候,只需要聲明一個API給他,而不需要專門開發一個Controller出來

面向聲明式API編程(DAP)

按照傳統的開發方式,如果要開發一個后端接口,需要分為以下三步

  • 創建controller
  • 創建service
  • 創建dao(甚至會創建存放sql的xml)
  • 但是,我們編寫一個接口,重點應該是放在業務邏輯上的,也就是說 我們的關注點應該在第二步,但是通常第一步和第三步的重復工作量讓我們感到窒息,所以我梳理了一下,制定了一個新玩法,這套新玩法就叫聲明式API

  • 寫業務邏輯
  • 聲明一個API給前端
  • 將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,我們還提供以下功能

  • 單表操作和固定sql操作,僅需一行注解
  • 分頁僅需調用一個方法,沒有任何第三方依賴
  • 沒有像Mybatis一樣的sqlMapper.xml
  • 支持AOP,IOC,聲明式事務
  • 搭建僅需三步,并提供官方中文文檔,再也不需要滿大街的搜Spring的機翻文檔或者個人博客了
  • 實體類的爭議

    本框架是強制要求,DAO用來接數據的實體類,字段名必須和表的字段名一致的, 這樣雖然提高了耦合,但是減少了映射的配置,并且實際情況是,如果你用別的框架, 你改了數據庫的字段名,你一樣要去改配置映射的那部分代碼,所以用映射來降低耦合并沒起到什么作用

    不過爭議不再這一點上,而在于命名規范上,因為數據庫的字段名通常是下劃線分割單詞, 跟java的變量名常用的駝峰有點出入, 首先可以確定的是JVM官方對變量名的命名規范是支持用下劃線的, 并且常量都是這么做得,從沒出現過風險。

    所以我總結了以下觀點

  • 是全英文命名
  • 可讀性完全沒影響
  • 不管是編譯還是運行都不會存在風險
  • 只是DAO返回的實體類用這種命名,并非所有的變量都要遵守
  • 所以,我們為什么非要一成不變的把自己關在舊籠子里?

    如果實在無法接受,我們也提供了解決方案,那就是用Map,然后在DAO層手工轉換成你的實體類。

    官網

    http://mars-framework.com

    收藏 (1) 分享

    總結

    以上是生活随笔為你收集整理的api接口怎么写_面向声明式API编程(DAP)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。