FileBeat + Flume + Kafka + HDFS + Neo4j + Flink + Redis:【案例】三度关系推荐V2.0版本09:数据接口定义及开发

前面我们把结果数据计算好了,那接下来我们需要开发数据接口,对外提供数据。
首先定义接口文档

一、数据接口文档定义

为了方便跨部门数据使用,我们需要定义接口文档,便于其他部门的同事使用我们的数据

在这里插入图片描述

二、数据接口代码开发

开发数据接口需要用到javaweb项目,在这给大家演示一下如何基于spring-boot搭建一个javaweb项目
创建子module项目:data_server
在pom.xml中添加依赖
首先添加spring-boot的依赖,还有fastjson依赖,因为我们后面在传输数据的时候需要使用json格式

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>
</dependencies>

然后把编译打包的配置也添加进去

<build>
	<plugins>
		<!-- java编译插件 -->
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-compiler-plugin</artifactId>
			<version>2.3.2</version>
			<configuration>
				<source>1.8</source>
				<target>1.8</target>
				<encoding>UTF-8</encoding>
			</configuration>
		</plugin>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<version>2.1.1.RELEASE</version>
			<configuration>
				<mainClass>com.imooc.Application</mainClass>
			</configuration>
			<executions>
				<execution>
					<goals>
						<goal>repackage</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

在项目的resource目录中添加这两个文件

下载地址:

application.properties
logback.xml

创建包:com.imooc
然后把下面这几个文件夹及文件拷贝到com.imooc包里面

controller
Application.java

这个项目目前的结构是这样的

在这里插入图片描述
直接在Application类中右键执行,就可以启动这个javaweb项目,项目内部已经集成了tomcta容器,监听的端口是8085
验证项目是否可以正常访问。
在浏览器中访问

http://localhost:8085/v1/t1?name=hadoop
hello,hadoop

能看到结果数据说明此项目的基础框架是ok的,接下来我们就来开发一个接口
由于在这我们需要操作redis,所以需要到pom.xml中增加jedis的依赖,以及把我们之前开发的RedisUtils工具类也拷贝过来。

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>

在com.imooc下创建utils目录,把RedisUtils拷贝到里面

接下来到DataController类中增加一个方法:getRecommendList
代码如下:

/**
 * 根据主播uid查询三度关系推荐列表数据
 * 返回数据格式:
 * {"flag":"success/error","msg":"错误信息","rec_uids":["1005","1004"]}
 * @param uid: 主播uid
 * @return
 */
@RequestMapping(value="/get_recommend_list",method = RequestMethod.GET)
public JSONObject getRecommendList(@RequestParam("uid") String uid) {
    JSONObject resObj = new JSONObject();
    String flag = "success";
    String msg = "ok";
    try{
        Jedis jedis = RedisUtils.getJedis();
        //获取待推荐列表数据
        List<String> uidList = jedis.lrange("l_rec_" + uid, 0, -1);
        String[] uidArr = uidList.toArray(new String[0]);
        resObj.put("rec_uids",uidArr);
    }catch (Exception e){
        flag = "error";
        msg = e.getMessage();
        logger.error(msg);
    }
    resObj.put("flag",flag);
    resObj.put("msg",msg);
    return resObj;
}

重新启动data_server项目
然后在浏览器中访问刚才开发的接口,能看到正常输出结果则说明此接口是正常的。

http://localhost:8085/v1/get_recommend_list?uid=1000
{“msg”:“ok”,“flag”:“success”,“rec_uids”:[“1005”,“1004”]}

对项目打jar包

D:\IdeaProjects\db_video_recommend_v2\data_server>mvn clean package -DskipTests
[INFO] Scanning for projects...
[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ data_server ---
[INFO] Building jar: D:\IdeaProjects\db_video_recommend_v2\data_server\target\data_server-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.1.1.RELEASE:repackage (default) @ data_server ---
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.535s
[INFO] Final Memory: 24M/409M
[INFO] ------------------------------------------------------------------------

将jar包上传到jobs目录里面

[root@bigdata04 jobs]# ll 
-rw-r--r--. 1 root root 18002786 Sep  7  2020 data_server-1.0-SNAPSHOT.jar

启动

[root@bigdata04 jobs]# nohup java -jar data_server-1.0-SNAPSHOT.jar &
[1] 5736

验证

[root@bigdata04 jobs]# curl -XGET 'http://bigdata04:8085/v1/get_recommend_list?uid=1000'
{"msg":"ok","flag":"success","rec_uids":["1005","1004"]}

猜你喜欢

转载自blog.csdn.net/weixin_40612128/article/details/123547071