metabase嵌入页面教程(java,html)
import org.springframework.security.jwt.Jwt;
import org.springframework.security.jwt.JwtHelper;
import org.springframework.security.jwt.crypto.sign.MacSigner;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@RestController
@RequestMapping("/dashboard")
public class MetabaseController2 {
private final String METABASE_SITE_URL = "http://ip:3000"; //你的metabase所处ip地址,metabase默认端口号3000
private final String METABASE_SECRET_KEY = ""; //秘匙
@GetMapping("/dashurl")
public DashboardParams dashAction() {
int round = Math.round(System.currentTimeMillis() / 1000)+10*60; // 10 minute expiration
String pyload = "{\n" +
" \"resource\": {\"dashboard\": 1},\n" + //这个地方要写自己分享的编号
" \"params\": {\n" +
" \n" +
" },\n" +
" \"exp\":"+ round + "\n" + //如果不需要过期时间,这一行可以注释掉
"}";
Jwt token = JwtHelper.encode(pyload, new MacSigner(METABASE_SECRET_KEY));
//注意下边地址中分享仪表盘和question的区别
String url = METABASE_SITE_URL + "/embed/dashboard/" + token.getEncoded() + "#bordered=true&titled=true";
return new DashboardParams(url);
}
@GetMapping("/questionurl")
public DashboardParams questionAction() {
//因为分享的是问题,所以下边resource中的是question,而不是dashboard,同时注意编号的改变
Jwt token = JwtHelper.encode("{\"resource\": {\"question\": 65}, \"params\": {}}", new MacSigner(METABASE_SECRET_KEY));
String url = METABASE_SITE_URL + "/embed/question/" + token.getEncoded() + "#bordered=true&titled=true";
return new DashboardParams(url);
}
class DashboardParams {
private String url;
public DashboardParams(String url) {
this.url = url;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
}