[关闭]
@chenpbh 2017-05-21T02:57:33.000000Z 字数 6245 阅读 732

开放接口开发指南

接口 开发 指南


变更历史

版本 日期 人员 变更内容
1.0 2017-05-20 陈鹏 版本初定义

1 简述

为了规范公司的开放接口开发工作,针对性开发了此开发框架及相关的注册和管理平台,此框架主要有如下几个特点:

image_1bfirhkcesmjj7v1rp83mcpbk9.png-39.2kB

2 开发步骤

2.1 新增服务应用

2.1.1 登录接口管理平台

http://192.168.2.21:9009/admin/login,用户名:admin,密码:123456

image_1bgk9h9qg1l7su1p1fs310ublva9.png-33.6kB
image_1bgk9ie291pgmq9eirvhs2ml0m.png-85.1kB

2.1.2 新增应用

点击应用管理的栏目,新增一个应用。
image_1bgk9lb381i3m1flg139j66e8qt13.png-40.7kB
image_1bgk9obv09o01m8c1n2f1hgmngf1g.png-35.7kB

记住应用编码,在开发接口时要用到。

2.2 创建maven工程

image_1bgka2m401qi2bqo1a221auf1od91t.png-17.1kB
image_1bgka781s1uoii9o2p3rpf18q22a.png-77.3kB
image_1bgka97g21un0146nir61e0r14in2n.png-21.9kB
image_1bgkaan7i1phff33gut1rg0178p34.png-43.2kB
image_1bgkac3sq15b95uh12n9r5b16dg3h.png-28.3kB
image_1bgkahapk7j11gq553flrb1lso3u.png-83.5kB

到此,简单的maven工程创建完成。

2.3 增加maven依赖

我们要在pom.xml增加相应的依赖,以支持接口的开发工作。

2.3.1 增加maven私服

  1. <repositories>
  2. <repository>
  3. <id>nexus</id>
  4. <name>Team Nexus Repository</name>
  5. <url>http://218.205.184.127:8081/nexus/content/groups/public</url>
  6. </repository>
  7. </repositories>

2.3.2 增加maven的继承依赖

  1. <parent>
  2. <groupId>com.bitnei.cloud</groupId>
  3. <artifactId>spring-boot-bitnei</artifactId>
  4. <version>1.0.0-9.RELEASE</version>
  5. <relativePath/> <!-- lookup parent from repository -->
  6. </parent>

2.3.3 增加接口相关依赖

  1. <dependency>
  2. <groupId>com.bitnei.cloud</groupId>
  3. <artifactId>spring-boot-api-client</artifactId>
  4. <version>1.0.0-29.RELEASE</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.bitnei.cloud</groupId>
  8. <artifactId>spring-boot-api-core</artifactId>
  9. <version>1.0.0-24.RELEASE</version>
  10. </dependency>

到此,maven配置完成,完整的maven配置如下:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.bitnei.cloud.api</groupId>
  5. <artifactId>HelloWorld</artifactId>
  6. <version>1.0.0-0-RELEASE</version>
  7. <packaging>jar</packaging>
  8. <name>HelloWorld</name>
  9. <url>http://maven.apache.org</url>
  10. <parent>
  11. <groupId>com.bitnei.cloud</groupId>
  12. <artifactId>spring-boot-bitnei</artifactId>
  13. <version>1.0.0-9.RELEASE</version>
  14. <relativePath/> <!-- lookup parent from repository -->
  15. </parent>
  16. <properties>
  17. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  18. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  19. </properties>
  20. <repositories>
  21. <repository>
  22. <id>nexus</id>
  23. <name>Team Nexus Repository</name>
  24. <url>http://218.205.184.127:8081/nexus/content/groups/public</url>
  25. </repository>
  26. </repositories>
  27. <dependencies>
  28. <dependency>
  29. <groupId>com.bitnei.cloud</groupId>
  30. <artifactId>spring-boot-api-client</artifactId>
  31. <version>1.0.0-29.RELEASE</version>
  32. </dependency>
  33. <dependency>
  34. <groupId>com.bitnei.cloud</groupId>
  35. <artifactId>spring-boot-api-core</artifactId>
  36. <version>1.0.0-24.RELEASE</version>
  37. </dependency>
  38. <dependency>
  39. <groupId>junit</groupId>
  40. <artifactId>junit</artifactId>
  41. <version>3.8.1</version>
  42. <scope>test</scope>
  43. </dependency>
  44. </dependencies>
  45. </project>

2.4 开始一个“Hello World”接口

2.4.1 将java目录设为source root

image_1bgkb5e745lvfbevs5103p1cs055.png-113.4kB

2.4.2 增加一个resources目录,并将其设为resource root

image_1bgkb82tn1tct1sk01f80u5n7515i.png-102.6kB

2.4.3、在resouces增加application.yml配置文件

  1. # dev一般代表开发环境,test代表测试环境,prod代表生产环境
  2. spring:
  3. profiles:
  4. active: dev

2.4.4 在resouces增加application-dev.yml配置文件

  1. server:
  2. port: 7979 # 服务器端口
  3. spring:
  4. api:
  5. pattern: /** #接口接口的匹配路径,一般此项不用作变动
  6. code: MY_HELLO_WORLD #对应 2.1 新增应用的编码
  7. center:
  8. url: http://192.168.2.21:9009 #注册中心地址

2.4.5 在resouces增加log4j.properties配置文件

  1. ### set log levels ###
  2. log4j.rootLogger = INFO,A1,D,E
  3. log4j.appender.A1=org.apache.log4j.ConsoleAppender
  4. log4j.appender.A1.Target=System.out
  5. log4j.appender.A1.Encoding=UTF-8
  6. log4j.appender.A1.layout=org.apache.log4j.PatternLayout
  7. log4j.appender.A1.layout.ConversionPattern=%-d{MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
  8. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
  9. log4j.appender.D.File= logs/debug.log
  10. log4j.appender.D.DatePattern=yyyy-MM-dd'.log'
  11. log4j.appender.D.Append = true
  12. log4j.appender.D.Encoding=UTF-8
  13. log4j.appender.D.Threshold = DEBUG
  14. log4j.appender.D.layout = org.apache.log4j.PatternLayout
  15. log4j.appender.D.layout.ConversionPattern = %-d{MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
  16. log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
  17. log4j.appender.E.File = logs/error.log
  18. log4j.appender.E.DatePattern=yyyy-MM-dd'.log'
  19. log4j.appender.E.Append = true
  20. log4j.appender.E.Encoding=UTF-8
  21. log4j.appender.E.Threshold = ERROR
  22. log4j.appender.E.layout = org.apache.log4j.PatternLayout
  23. log4j.appender.E.layout.ConversionPattern = %-d{MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

2.4.6 改造App.java,使其支持接口注册

  1. import com.bitnei.cloud.core.util.SpringContextUtil;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. import org.springframework.context.annotation.ComponentScan;
  5. import org.springframework.scheduling.annotation.EnableScheduling;
  6. /**
  7. * Hello world!
  8. *
  9. */
  10. @SpringBootApplication
  11. @ComponentScan(basePackages={"com.bitnei"})
  12. @EnableScheduling
  13. public class App {
  14. public static void main(String[] args) {
  15. SpringContextUtil.ctx = SpringApplication.run(App.class, args);
  16. }
  17. }

2.4.6 编写Hello World接口

  1. package com.bitnei.cloud.api.web;
  2. import com.bitnei.cloud.api.client.annotion.Api;
  3. import com.bitnei.cloud.core.bean.ResultMsg;
  4. import com.bitnei.cloud.core.util.HttpUtil;
  5. import org.apache.log4j.Logger;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.web.bind.annotation.PostMapping;
  8. import org.springframework.web.bind.annotation.RequestBody;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.ResponseBody;
  11. import java.util.Map;
  12. /**
  13. * Created by chenp on 2017-05-21.
  14. */
  15. @Controller
  16. @RequestMapping(value = "/my")
  17. public class HelloWorldController {
  18. private final Logger logger = Logger.getLogger(getClass());
  19. @PostMapping(value = "/helloWorld")
  20. @Api(name = "Hello World",code = "HELLO_WORLD",version = "1.0",url = "/my/helloWorld",orderNum = "1",note = "我的第一个Hello World接口")
  21. public ResultMsg helloWorld(@RequestBody String body ){
  22. ResultMsg resultMsg = new ResultMsg();
  23. try {
  24. //获取请求参数
  25. Map<String,String> requestMap = HttpUtil.parseBody(body,Map.class);
  26. //接口传递了一个name的参数
  27. String name = requestMap.get("name");
  28. String str = "Hello World,My Name is "+ name;
  29. //打包组装为Result结构
  30. resultMsg = HttpUtil.serializeResp(str);
  31. }
  32. catch (Exception e){
  33. logger.error("ERROR", e);
  34. resultMsg.setCode(1003);
  35. resultMsg.setMsg("参数不合法或服务异常");
  36. }
  37. return resultMsg;
  38. }
  39. }

2.5 启动接口

2.5.1 配置项目编码

image_1bgkducmdg8d1bfa3mv13db19cg6p.png-83.7kB

2.5.2 启动APP.java

image_1bgkdn648tqs1int1jfp5a41sv25v.png-68.3kB
image_1bgke0eib1vdta0n1idg6ol164276.png-86.7kB

此控制台出现以上信息,即表示接口注册成功。

2.5.3 查看接口注册情况

登录接口管理平台,我们在应用管理可以看到应用心跳时间及接口列表

image_1bgkeeopruek13rrqit13usn1p7j.png-89.2kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注