WANG 6 anos atrás
pai
commit
9a6ff1cf3b

+ 22 - 10
src/main/java/cn/com/qmth/examcloud/web/actuator/ApiStatusEndpoint.java

@@ -1,6 +1,5 @@
 package cn.com.qmth.examcloud.web.actuator;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -8,10 +7,13 @@ import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
 import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
 import org.springframework.boot.actuate.endpoint.annotation.Selector;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.http.MediaType;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
+import cn.com.qmth.examcloud.commons.util.FreeMarkerUtil;
+import cn.com.qmth.examcloud.commons.util.ResourceLoader;
 import cn.com.qmth.examcloud.web.support.ApiInfo;
 import cn.com.qmth.examcloud.web.support.ApiInfoHolder;
 
@@ -26,8 +28,14 @@ import cn.com.qmth.examcloud.web.support.ApiInfoHolder;
 @Endpoint(id = "api-status")
 public class ApiStatusEndpoint {
 
-	@ReadOperation(produces = "application/json")
-	public Map<String, Object> getByDefault() {
+	/**
+	 * url: /actuator/api-status
+	 *
+	 * @author WANGWEI
+	 * @return
+	 */
+	@ReadOperation(produces = {MediaType.TEXT_HTML_VALUE})
+	public String getByDefault() {
 		return get("");
 	}
 
@@ -38,8 +46,8 @@ public class ApiStatusEndpoint {
 	 * @param order
 	 * @return
 	 */
-	@ReadOperation(produces = "application/json")
-	public Map<String, Object> get(@Selector String order) {
+	@ReadOperation(produces = {MediaType.TEXT_HTML_VALUE})
+	public String get(@Selector String order) {
 
 		System.out.println(order);
 		ReportorHolder.getApiDataReportor().report();
@@ -61,7 +69,7 @@ public class ApiStatusEndpoint {
 			meterInfoMap.put(mapping, meterInfo);
 		}
 
-		List<ApiStatusInfo> result = Lists.newArrayList();
+		List<ApiStatusInfo> list = Lists.newArrayList();
 
 		for (TimerInfo timerInfo : timerInfoList) {
 			String key = timerInfo.getKey();
@@ -72,7 +80,7 @@ public class ApiStatusEndpoint {
 			String mapping = key.substring(MetricNames.API_TIMER.name().length() + 1);
 
 			ApiStatusInfo apiStatusInfo = new ApiStatusInfo();
-			result.add(apiStatusInfo);
+			list.add(apiStatusInfo);
 
 			apiStatusInfo.setMapping(mapping);
 
@@ -134,10 +142,14 @@ public class ApiStatusEndpoint {
 
 		}
 
-		Map<String, Object> map = new HashMap<>(16);
-		map.put("result", result);
+		Map<String, Object> map = Maps.newHashMap();
+		map.put("list", list);
 		map.put("dateTime", reportInfo.getDateTime());
-		return map;
+
+		String html = ResourceLoader.getResource("api-status.html");
+
+		String ret = FreeMarkerUtil.process(html, map);
+		return ret;
 	}
 
 }

+ 24 - 0
src/main/resources/api-status.html

@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="UTF-8">
+<title>API status</title>
+</head>
+<body>
+	<table border="1">
+		<caption>date: ${dateTime?string('yyyy-MM-dd HH:mm:ss')}</caption>
+		<tr>
+			<th>Month</th>
+			<th>Savings</th>
+		</tr>
+		<tr>
+			<td>January</td>
+			<td>$100</td>
+		</tr>
+		<tr>
+			<td>February</td>
+			<td>$50</td>
+		</tr>
+	</table>
+</body>
+</html>