当我进行 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 问题?
如何使用 javascript/jquery/AJAX 调用 Django REST API?