当我进行 Rest api 调用时,使用 Spring Boot 动态创建列/表

Posted

技术标签:

【中文标题】当我进行 Rest api 调用时,使用 Spring Boot 动态创建列/表【英文标题】:Dynamically create columns / table using SpringBoot when i make Rest api calls 【发布时间】:2019-05-13 23:27:05 【问题描述】:

当我进行 REST API 调用时,我正在尝试使用 Spring-Boot 动态生成模式。例如,我使用两个不同的 JSON 主体对 http://localhost:8080/school 进行休息调用。

呼叫 1:

id: 1111, name: "XYZ"

呼叫 2:

/school
id: 1234, name: "ABCD", contact: "test@test.com"

请求正文被转换为每个请求的表或集合的架构。

表或集合名称学校

第一次通话

id: Number, name: String

我进行了另一个 API 调用,但传递了不同的 JSON 正文(对于调用 2):

表或集合名称学校

 id: Number, name: String, contact: String

谁能告诉我该怎么做,好吗?我在后端使用 mysql 数据库。

【问题讨论】:

在回答出现的第一个问题之前是:为什么?你为什么要这样做?作为一个经验法则,动态创建数据库结构 (DDL) 是一个坏主意,通常表明需要重新审视设计/架构。如果您正在构建一个多租户系统,那么了解您的一些要求是值得的。换句话说,我的简短回答/建议是:不要这样做。 我这样做是为了学习如何动态创建模式。 如果有使用 Springboot 的方法,请告诉我 如果您使用 Spring Data 和 Hibernate,这里有一个有用的链接 - ***.com/q/42135114/9121293 您是想要动态地使用不同的架构,还是想要存储具有不同结构/架构的记录?如果是后者,那么您可能需要以下内容之一:a)可选字段的可空列(例如您给出的示例中的“联系人”); b) 继承,由 JPA 映射支持; c) 将原始 JSON 存储在 Postgres(和其他)支持的数据库中; d) 一个“无模式”数据库,例如 CouchDB 或 Mongo。 【参考方案1】:

您已连接到数据库。它接受任意语句。

只要您要连接的用户拥有必要的权限,就没有什么可以阻止您使用该连接将 DDL 语句(如 CREATE TABLE 和类似的)发送到数据库。

【讨论】:

以上是关于当我进行 Rest api 调用时,使用 Spring Boot 动态创建列/表的主要内容,如果未能解决你的问题,请参考以下文章

Ionic2,Angular2:如何在使用 http get 进行 REST API 服务调用时避免 CORS 问题?

使用 JSONP 和 JQuery 调用 REST Api

如何使用 javascript/jquery/AJAX 调用 Django REST API?

如何在php中使用CURL调用REST API?

如何从 JavaScript 调用 REST Web 服务 API?

400错误代码,当使用RestTemplate进行Rest API时。