diff --git a/README.md b/README.md index 2dd13af27203b4e2812f798829b75c69c2fe88bc..7a7224c78f97e287ffd722d4d38325835bf4989b 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,7 @@ - # API Blueprint > 方便设计API的文档规范 -[](https://apiblueprint-slack.herokuapp.com/) - 在进行微æœåС开å‘的过程ä¸ï¼Œä¸ºäº†ä¿è¯æœ€ç»ˆå¼€å‘的系统跟最åˆçš„è®¾è®¡ä¿æŒä¸€è‡´ï¼Œçº¦å®š`RESTful`接å£ä¹‹é—´çš„调用方法,我们需è¦å°†`API`è®¾è®¡æ–‡æ¡£åŒ–ï¼Œå› æ¤æˆ‘们引入了`API Blueprint`。 ## API Blueprint 是什么 @@ -31,3 +28,90 @@ $ npm install -g aglio ## ç”Ÿæˆ ``` $ aglio -i demo/index.apib -o demo/index.html + + +### 二ã€é…置数æ®åº“ +版本: mysql5.7+ + +### 三ã€dips-cloudé…置修改 +dips/dips-config/src/main/resources/config/application-dev.yml + +# redis 相关 +spring: + redis: + password: + host: localhost + +dips/dips-config/src/main/resources/config/dips-auth-dev.yml +dips/dips-config/src/main/resources/config/dips-upms-dev.yml +dips/dips-config/src/main/resources/config/dips-mpms-dev.yml + +# æ•°æ®æº +spring: + datasource: + type: com.zaxxer.hikari.HikariDataSource + driver-class-name: com.mysql.jdbc.Driver + username: root + password: root + url: jdbc:mysql://127.0.0.1:3309/dips?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false +``` + + +### å››ã€dips-ui: + +``` +git clone git@gitlab.com:gomlFE/dips.git +npm run dev +``` +请确ä¿å¯åŠ¨é¡ºåº +1.eureka +2.config +3.gateway +4.auth +5.upms +6.mpms +``` + + +### 技术路线 +1)微æœåŠ¡æŠ€æœ¯ä½“ç³» +å¹³å°é‡‡ç”¨å½“å‰ä¸»æµçš„体系结构,支æŒè·¨å¹³å°ã€è·¨æ•°æ®åº“应用。数æ®åº“采用Mysql关系型数æ®åº“作为数æ®åº“æœåŠ¡ã€‚å¹³å°å…¼å®¹Linuxï¼Œä¸æ ‡éº’麟ç‰å¤šç§æ“作系统平å°ï¼Œåº”用开æºWebã€åº”用æœåŠ¡å™¨ç‰æˆç†Ÿä¸é—´ä»¶äº§å“进行系统设计,ä¿è¯ç³»ç»ŸæŠ€æœ¯è·¯çº¿å…ˆè¿›ã€å¯è¡Œã€åˆç†ã€æˆç†Ÿã€‚ +å¾®æœåŠ¡æž¶æž„æ˜¯ç”±å¤šä¸ªå°æœåŠ¡ç»„æˆçš„应用。æ¯ä¸ªæœåŠ¡è¿è¡ŒäºŽç‹¬ç«‹çš„进程,并且采用轻é‡çº§äº¤äº’。多数情况下是一个HTTP的资æºAPI。这些æœåŠ¡å…·å¤‡ç‹¬ç«‹ä¸šåŠ¡èƒ½åŠ›å¹¶å¯ä»¥é€šè¿‡è‡ªåŠ¨åŒ–éƒ¨ç½²æ–¹å¼ç‹¬ç«‹éƒ¨ç½²ã€‚è¿™ç§é£Žæ ¼ä½¿æœ€å°åŒ–集ä¸ç®¡ç†ï¼Œä»Žè€Œå¯ä»¥ä½¿ç”¨å¤šç§ä¸åŒçš„编程è¯è¨€å’Œæ•°æ®å˜å‚¨æŠ€æœ¯ã€‚å¾®æœåŠ¡æž¶æž„ç†å¿µæ˜¯å¯ä»¥ç‹¬ç«‹å»ºè®¾ï¼Œå¯ä»¥ä½¿ç”¨ä¸åŒçš„æŠ€æœ¯ã€è¯è¨€ã€æ¡†æž¶ç‰ï¼Œä»¥ä¾¿èƒ½æ›´å¿«é€Ÿçš„ä½¿ç”¨æ–°æŠ€æœ¯ã€æ–°æ¡†æž¶ç‰å“应特定客户需求,解决å•ä½“åº”ç”¨æž¶æž„æ›´æ–°æŠ€æœ¯ã€æ›´æ–°æ¡†æž¶æ—¶é¢ä¸´çš„困难或阻ç¢ã€‚ +2)开å‘å¹³å° +本次应用系统基于Eclipse框架开å‘。Eclipse 是一个开放æºä»£ç çš„ã€åŸºäºŽJavaçš„å¯æ‰©å±•å¼€å‘å¹³å°ã€‚å°±å…¶æœ¬èº«è€Œè¨€ï¼Œå®ƒåªæ˜¯ä¸€ä¸ªæ¡†æž¶å’Œä¸€ç»„æœåŠ¡ï¼Œç”¨äºŽé€šè¿‡æ’件组件构建开å‘环境。幸è¿çš„æ˜¯ï¼ŒEclipse é™„å¸¦äº†ä¸€ä¸ªæ ‡å‡†çš„æ’件集,包括Javaå¼€å‘工具(Java Development Kit,JDK)。这个比较干净,ä¸å¸¦ä»»ä½•æ’件。 +Eclipse的主è¦ç»„æˆ +主è¦ç”±Eclipse项目ã€Eclipse工具项目和Eclipse技术项目三个项目组æˆï¼Œå…·ä½“包括四个部分组æˆâ€”—Eclipse Platformã€JDTã€CDTå’ŒPDE.JDT支æŒJavaå¼€å‘ã€CDT支æŒCå¼€å‘ã€PDEç”¨æ¥æ”¯æŒæ’ä»¶å¼€å‘,Eclipse Platformåˆ™æ˜¯ä¸€ä¸ªå¼€æ”¾çš„å¯æ‰©å±•IDE,æä¾›äº†ä¸€ä¸ªé€šç”¨çš„å¼€å‘å¹³å°ã€‚它æä¾›å»ºé€ å—å’Œæž„é€ å¹¶è¿è¡Œé›†æˆè½¯ä»¶å¼€å‘工具的基础。Eclipse Platformå…è®¸å·¥å…·å»ºé€ è€…ç‹¬ç«‹å¼€å‘ä¸Žä»–äººå·¥å…·æ— ç¼é›†æˆçš„工具。 +Eclipse SDK(软件开å‘者包)是Eclipse Platformã€JDTå’ŒPDE所生产的组件åˆå¹¶ï¼Œå®ƒä»¬å¯ä»¥ä¸€æ¬¡ä¸‹è½½ã€‚这些部分在一起æä¾›äº†ä¸€ä¸ªå…·æœ‰ä¸°å¯Œç‰¹æ€§çš„å¼€å‘环境,å…许开å‘è€…æœ‰æ•ˆåœ°å»ºé€ å¯ä»¥æ— ç¼é›†æˆåˆ°Eclipse Platformä¸çš„工具。Eclipse SDKç”±Eclipse项目生产的工具和æ¥è‡ªå…¶å®ƒå¼€æ”¾æºä»£ç 的第三方软件组åˆè€Œæˆã€‚Eclipse项目生产的软件以 CPLå‘布,第三方组件有å„自自身的许å¯å议。 + + + +(a)J2EE技术 +J2EE(Java 2 Platform, Enterprise Edition)是一个为大ä¼ä¸šä¸»æœºçº§çš„计算类型而设计的Javaå¹³å°ã€‚Sun微系统(与其工业伙伴一起,例如IBM)设计了J2EEï¼Œä»¥æ¤æ¥ç®€åŒ–在瘦客 户级环境下的应用开å‘ã€‚ç”±äºŽåˆ›é€ äº†æ ‡å‡†çš„å¯é‡ç”¨æ¨¡å—组件以åŠç”±äºŽæž„建出能自动处ç†ç¼–程ä¸å¤šæ–¹é¢é—®é¢˜çš„ç‰çº§ç»“构,J2EE简化了应用程åºçš„å¼€å‘,也é™ä½Žäº†å¯¹ 编程和对å—è®çš„程åºå‘˜çš„è¦æ±‚。 +J2EE使用多层的分布å¼åº”用模型,应用逻辑按 功能划分为组件,å„ä¸ªåº”ç”¨ç»„ä»¶æ ¹æ®ä»–们所在的层分布在ä¸åŒçš„æœºå™¨ä¸Šã€‚事实上,sun设计J2EEçš„åˆè¡·æ£æ˜¯ä¸ºäº†è§£å†³ä¸¤å±‚æ¨¡å¼ ï¼ˆclient/serverï¼‰çš„å¼Šç«¯ï¼Œåœ¨ä¼ ç»Ÿæ¨¡å¼ä¸ï¼Œå®¢æˆ·ç«¯æ‹…å½“äº†è¿‡å¤šçš„è§’è‰²è€Œæ˜¾å¾—è‡ƒè‚¿ï¼Œåœ¨è¿™ç§æ¨¡å¼ä¸ï¼Œç¬¬ä¸€æ¬¡éƒ¨ç½²çš„æ—¶å€™æ¯”较容易,但难于å‡çº§æˆ–改进, å¯ä¼¸å±•性也ä¸ç†æƒ³ï¼Œè€Œä¸”ç»å¸¸åŸºäºŽæŸç§ä¸“有的å议,通常是æŸç§æ•°æ®åº“å议。它使得é‡ç”¨ä¸šåŠ¡é€»è¾‘å’Œç•Œé¢é€»è¾‘éžå¸¸å›°éš¾ã€‚现在J2EE 的多层ä¼ä¸šçº§åº”用模型将两层化模型ä¸çš„ä¸åŒå±‚é¢åˆ‡åˆ†æˆè®¸å¤šå±‚。一个多层化应用能够为ä¸åŒçš„æ¯ç§æœåŠ¡æä¾›ä¸€ä¸ªç‹¬ç«‹çš„层,以下是 J2EE 典型的四层结构: +è¿è¡Œåœ¨å®¢æˆ·ç«¯æœºå™¨ä¸Šçš„客户层组件 +è¿è¡Œåœ¨J2EEæœåŠ¡å™¨ä¸Šçš„Web层组件 +è¿è¡Œåœ¨J2EEæœåŠ¡å™¨ä¸Šçš„ä¸šåŠ¡é€»è¾‘å±‚ç»„ä»¶ +è¿è¡Œåœ¨EISæœåŠ¡å™¨ä¸Šçš„ä¼ä¸šä¿¡æ¯ç³»ç»Ÿï¼ˆEnterprise information system)层软件 +(b)é¢å‘对象的组件技术 + é¢å‘对象的组件技术是一ç§å®Œå…¨ç‹¬ç«‹äºŽç¡¬ä»¶å’Œæ“作系统的开å‘环境,ç€é‡äºŽå¼€å‘æž„æˆåº”用程åºâ€œä¸šåŠ¡å¯¹è±¡â€çš„å¯é‡å¤ä½¿ç”¨çš„组件,利用这些组件顺利地建立分布å¼åº”用程åºã€‚ +åº”ç”¨å¹³å°æ¨¡å—é—´ç›¸å¯¹ç‹¬ç«‹ï¼ŒæŽ¥å£æ¸…晰,内部的业务æµç¨‹å‡çº§å’Œæ”¹é€ ä¸Žå…¶å®ƒæ¨¡å—æ— 关,所有模å—基于组件如EJBã€Web Serviceså¼€å‘。 +(cï¼‰ç¡¬ä»¶å¹³å° +硬件平å°ä¸»è¦åŒ…括数æ®åº“æœåŠ¡å™¨ã€æ–‡ä»¶æœåС噍ã€å®¹å™¨æœåŠ¡å™¨ï¼Œæœ¬ç³»ç»Ÿå¯ä»¥å°†æ•°æ®åº“ã€å®¹å™¨æœåŠ¡å™¨ã€æ–‡ä»¶æœåŠ¡å™¨éƒ½éƒ¨ç½²åœ¨åŒä¸€å°æœåŠ¡å™¨ä¸Šï¼Œä¹Ÿå¯ä»¥éƒ¨ç½²åœ¨ä¸åŒçš„æœåŠ¡å™¨ä¸Šã€‚ä¸ºäº†å®‰å…¨æ€§çš„è€ƒè™‘ï¼Œå»ºè®®æ•°æ®åº“æœåŠ¡å™¨å’ŒWEBæœåŠ¡å™¨å’Œæ–‡ä»¶æœåŠ¡å™¨åˆ†å¼€éƒ¨ç½²ã€‚ +3)技术框架 +(a)Spring Cloud框架 +Spring Boot 是由 Pivotal 团队æä¾›çš„全新框架,其设计目的是用æ¥ç®€åŒ–æ–° Spring 应用的åˆå§‹æå»ºä»¥åŠå¼€å‘è¿‡ç¨‹ã€‚è¯¥æ¡†æž¶ä½¿ç”¨äº†ç‰¹å®šçš„æ–¹å¼æ¥è¿›è¡Œé…置,从而使开å‘人员ä¸å†éœ€è¦å®šä¹‰æ ·æ¿åŒ–çš„é…置,Spring Cloud 是一系列框架的有åºé›†åˆï¼Œå®ƒåˆ©ç”¨ Spring Boot 的开å‘便利性巧妙地简化了分布å¼ç³»ç»ŸåŸºç¡€è®¾æ–½çš„å¼€å‘,如æœåŠ¡å‘现注册ã€é…ç½®ä¸å¿ƒã€æ¶ˆæ¯æ€»çº¿ã€è´Ÿè½½å‡è¡¡ã€æ–è·¯å™¨ã€æ•°æ®ç›‘控ç‰ï¼Œéƒ½å¯ä»¥ç”¨ Spring Boot 的开å‘é£Žæ ¼åšåˆ°ä¸€é”®å¯åŠ¨å’Œéƒ¨ç½²ã€‚ +(b)MyBatis Plus框架 +MyBatis本是apache的一个开æºé¡¹ç›®iBatis,2010年这个项目由apachesoftwarefoundationè¿ç§»åˆ°äº†googlecode,并且改å为MyBatis。MyBatis是一个基于Javaçš„æŒä¹…层框架。iBATISæä¾›çš„æŒä¹…å±‚æ¡†æž¶åŒ…æ‹¬SQLMapså’ŒDataAccessObjects(DAO)MyBatisæ¶ˆé™¤äº†å‡ ä¹Žæ‰€æœ‰çš„JDBC代ç å’Œå‚æ•°çš„æ‰‹å·¥è®¾ç½®ä»¥åŠç»“果集的检索。MyBatis使用简å•çš„XML或注解用于é…ç½®å’ŒåŽŸå§‹æ˜ å°„ï¼Œå°†æŽ¥å£å’ŒJavaçš„POJOs(PlainOldJavaObjects,普通的Javaå¯¹è±¡ï¼‰æ˜ å°„æˆæ•°æ®åº“ä¸çš„记录。 +MyBatis Plus 是国内人员开å‘çš„ MyBatis 增强工具,在 MyBatis 的基础上åªåšå¢žå¼ºä¸å𿔹å˜ï¼Œä¸ºç®€åŒ–å¼€å‘ã€æé«˜æ•ˆçŽ‡è€Œç”Ÿã€‚ +MyBatis Plus çš„æ ¸å¿ƒåŠŸèƒ½æœ‰ï¼šæ”¯æŒé€šç”¨çš„ CRUDã€ä»£ç 生æˆå™¨ä¸Žæ¡ä»¶æž„é€ å™¨ã€‚ +通用 CRUD:定义好 Mapper 接å£åŽï¼Œåªéœ€è¦ç»§æ‰¿ BaseMapper<T> 接å£å³å¯èŽ·å¾—é€šç”¨çš„å¢žåˆ æ”¹æŸ¥åŠŸèƒ½ï¼Œæ— éœ€ç¼–å†™ä»»ä½•æŽ¥å£æ–¹æ³•与é…置文件 +æ¡ä»¶æž„é€ å™¨ï¼šé€šè¿‡ EntityWrapper<T> (实体包装类),å¯ä»¥ç”¨äºŽæ‹¼æŽ¥ SQL è¯å¥ï¼Œå¹¶ä¸”æ”¯æŒæŽ’åºã€åˆ†ç»„查询ç‰å¤æ‚çš„ SQL +代ç 生æˆå™¨ï¼šæ”¯æŒä¸€ç³»åˆ—çš„ç–ç•¥é…置与全局é…置,比 MyBatis 的代ç ç”Ÿæˆæ›´å¥½ç”¨ã€‚ +(c)Docker容器 +Docker是使用Googleå…¬å¸æŽ¨å‡ºçš„Goè¯è¨€è¿›è¡Œå¼€å‘实现, 基于Linuxå†…æ ¸çš„CGroupã€Namespace以åŠAUFS技术,对进程进行å°è£…隔离,属于æ“作系统层é¢çš„è™šæ‹ŸåŒ–æŠ€æœ¯ã€‚ç”±äºŽéš”ç¦»çš„è¿›ç¨‹ç‹¬ç«‹äºŽå®¿ä¸»å’Œå…¶ä»–éš”ç¦»çš„è¿›ç¨‹ï¼Œå› æ¤ä¹Ÿè¢«ç§°ä¸ºå®¹å™¨ã€‚ä¸Žä¼ ç»Ÿè™šæ‹Ÿæœºå’ŒDocker容器技术比较,虚拟机ä¸ä»…包括应用也包括æ“作系统。 æ“作系统一般è¦å ç”¨å‡ ä¸ªGBçš„ç£ç›˜ç©ºé—´ï¼Œè€ŒDockerå®¹å™¨å…±ç”¨å®¿ä¸»çš„å†…æ ¸ï¼Œåªéœ€æŒ‰ç…§åº”用和必è¦çš„类库,éžå¸¸è½»é‡ã€‚ +(d)vue.jså‰ç«¯æ¡†æž¶ +Vue.js是一个轻巧ã€é«˜æ€§èƒ½ã€å¯ç»„件化的MVVMåº“ï¼ŒåŒæ—¶æ‹¥æœ‰éžå¸¸å®¹æ˜“上手的APIï¼› +Vue.js是一个构建数æ®é©±åŠ¨çš„Web界é¢çš„库。 +Vue.js是一套构建用户界é¢çš„ æ¸è¿›å¼æ¡†æž¶ã€‚与其他é‡é‡çº§æ¡†æž¶ä¸åŒçš„æ˜¯ï¼ŒVue 采用自底å‘上增é‡å¼€å‘的设计。Vue çš„æ ¸å¿ƒåº“åªå…³æ³¨è§†å›¾å±‚,并且éžå¸¸å®¹æ˜“å¦ä¹ ,éžå¸¸å®¹æ˜“与其它库或已有项目整åˆã€‚å¦ä¸€æ–¹é¢ï¼ŒVue å®Œå…¨æœ‰èƒ½åŠ›é©±åŠ¨é‡‡ç”¨å•æ–‡ä»¶ç»„ä»¶å’Œ Vue 生æ€ç³»ç»Ÿæ”¯æŒçš„库开å‘çš„å¤æ‚å•页应用。数æ®é©±åЍ+组件化的å‰ç«¯å¼€å‘。Vue.jsä½œä¸ºç›®å‰æœ€çƒé—¨æœ€å…·å‰æ™¯çš„å‰ç«¯æ¡†æž¶ä¹‹ä¸€ï¼Œå…¶æä¾›äº†ä¸€ç§å¸®åŠ©æˆ‘ä»¬å¿«é€Ÿæž„å»ºå¹¶å¼€å‘å‰ç«¯é¡¹ç›®çš„æ–°çš„æ€ç»´æ¨¡å¼ã€‚ + +