我对Grafana和Spring Boot很陌生。我正在尝试创建一个Spring Boot应用程序,并使用Grafana SimpleJSON插件从我的Spring BootAPI中获取数据并创建图形。(仅供参考,与我的问题不太相关-我遵循这里的说明。)https://grafana.com/grafana/plugins/grafana-simple-json-datasource/)
现在,我只是将数据硬编码到我的Spring Boot应用程序中,但我一直在获取所需的正确JSON格式。
我想要的:
[
{
"columns":[
{"text":"Time","type":"time"},
{"text":"Country","type":"string"},
{"text":"Number","type":"number"}
],
"rows":[
[1234567,"SE",123],
[1234567,"DE",231],
[1234567,"US",321]
],
"type":"table"
}
]
实现这一点的最佳方式是什么?
到目前为止,我已经尝试创建一个自定义类,还尝试只使用Map(如何在Springboot中返回JSON响应?)。但在这两种方法中都遇到了相同的问题——“行”中的数据具有不同的类型(例如[1234567,“SE”,123])。我怎么能这么说?
@PostMapping("/query")
public ??? getData() {
...
}
谢谢
我想最简单的方法是定义DTO类。
public class MyObject {
private List<TextType> columns;//you have to define TextType class
private List<Object[]> rows;
private String type;
//Getters and setters
}
如果行中有混合类型,则无法定义类型;但是,您可以在运行时对其进行调整。否则,如果rows元素有3个元素,则可以定义类型。
public class MyObject2 {
private int i1;
private String s1;
private int i2;
//Getters and setters
//Define your own format that print i1, s1, i2 instead of {"i1": i1, "s1":s1, "i2":i2}
}
您需要为这种情况定义正确的返回类型。
有人认为这样应该行得通:
@PostMapping("/query")
public List<Item> getData() {
List<Item> response = new ArrayList<>();
Item item = new Item();
item.type = "table";
Column col1 = new Columne("Time", "time");
item.columns.add(col1);
// add other columns
item.rows.add(new Object[] {1234567, "SE", 123})
// add other rows
response.add(item);
return response;
}
class Item {
public String type;
public List<Column> columns = new ArrayList<>();
public List<Object[]> rows = new ArrayList<>();
}
class Column {
public String text;
public String type;
public Column(String text, String type) {
this.text = text;
this.type = type;
}
}
当一个应用在处理完一个请求后, 这个应用会生成一个 response 响应对象并把这个响应对象发送给终端用户 这个响应对象包含的信息有 HTTP 状态码,HTTP 头和主体内容等, 从本质上说,网页应用开发最终的目标就是根据不同的请求去构建这些响应对象。 在大多数实际应用情况下,你应该主要地去处理 response 这个 应用组件, 在默认情况下,它是一个继承自 yii\web\Response
CabalPHP 的请求(Request)和响应(Response)对象依赖 zendframework/zend-diactoros 实现了 PSR-7标准 psr/http-message 中的 Psr\Http\Message\ServerRequestInterface和Psr\Http\Message\ResponseInterface 的全部接口,同时也扩展了自己的一些实用方法方便使用
在 Hyperf 里可通过 Hyperf\HttpServer\Contract\ResponseInterface 接口类来注入 Response 代理对象对响应进行处理,默认返回 Hyperf\HttpServer\Response 对象,该对象可直接调用所有 Psr\Http\Message\ResponseInterface 的方法。 注意 PSR-7 标准为 响应(Response) 进
响应对象封装了从服务器返回到客户端的所有信息。在HTTP协议中,这些信息是包含在从服务器传输到客户端的HTTP头信息或响应的消息体中。
Response对象的属性。 Response.url 最终的URL。 Response.text 响应内容,以unicode为单位。 如果Response.encoding是None且chardet模块可用,则将猜测内容的编码。 Response.content 响应内容,以字节为单位。 Response.doc 一个PyQuery响应的内容的对象。链接默认为绝对链接。 请参阅PyQuery的文
我试图用制作一个响应线图。 我用这个MWE重现了我的尝试: 如果我让浏览器更宽,线条图会像你期望的那样响应,填满空间。 我的问题是,如果我使浏览器变窄,图形不会像我使其变宽时那样调整大小以填充浏览器宽度的100%。对于新的浏览器宽度来说,它仍然太宽。有趣的是,在刷新时,图形总是占据浏览器的100%。 把浏览器做宽做窄,如何让图占据浏览器的100%?
我用IntelliJ创建了一个非常简单的流测试。 IntelliJ无法完成测试,并给了我错误 这导致假设响应程序流不执行任何操作。 启动器流被执行。我可以看到这一点,因为命令显示在日志中。但是,我不知道响应器流是否从未由发起方流启动,或者只是没有响应。也许你可以帮我。 谢谢
主要内容:HTTP响应完整格式HTTP响应完整格式 HTTP的响应也由三部分组成(响应行+响应头+响应体): 以下是一个实际的HTTP响应示例: ①报文协议及版本; ②状态码及状态描述; ③响应报文头,也是由多个属性组成; ④响应报文体,即我们真正要的“干货”。