[英]How to customize 401 Unauthorized and 403 Forbidden HTTP responses when using Keycloak and Spring boot?
[英]How to customize JSON responses in Spring Boot?
我是 Java 和 Spring 引導的新手。 我正在使用 Spring 引導創建 REST 服務。 我有一個實體,它只包含對其他實體的引用,如下所示:
@Entity
@Table(name = "table_xyz")
public class RolesAccessEntity {
@Id
@Column(name = "id", columnDefinition = "serial")
private int id;
@ManyToOne
@JoinColumn(name = "role_id", referencedColumnName = "id")
private RoleEntity roleEntity;
@ManyToOne
@JoinColumn(name = "page_id", referencedColumnName = "id")
private PagesEntity pagesEntity;
@ManyToOne
@JoinColumn(name="column_id", referencedColumnName = "id")
private ColumnsEntity columnsEntity;
}
我必須獲取全部內容並返回 REST 響應。 當我使用 Jackson 將 POJO 放入 ObjectNode 時,我得到如下響應:
{
"success": true,
"values": [
{
"id": 32,
"roleEntity": {
"id": 15,
"roleName": "Role1"
},
"pagesEntity": {
"id": 1,
"pageName": "Page1"
},
"columnsEntity": {
"id": 1,
"columnName": "Column1"
}
},
{
"id": 33,
"roleEntity": {
"id": 15,
"roleName": "Role1"
},
"pagesEntity": {
"id": 1,
"pageName": "Page1"
},
"columnsEntity": {
"id": 2,
"columnName": "Column2"
}
},
{
"id": 34,
"roleEntity": {
"id": 15,
"roleName": "Role1"
},
"pagesEntity": {
"id": 1,
"pageName": "Page1"
},
"columnsEntity": {
"id": 3,
"columnName": "Column3"
}
}
]
}
但是,我如何將事物組合在一起? 像這樣:
{
"success": true,
"values":
[
{
"id": 32,
"roleEntity": {
"role_id": 15,
"roleName": "Role1",
"values": [
{"page_id": 1,
"page_name": "Page1",
"values": [
{
"column_id": 1,
"column_name": "Column1"
},
{
"column_id": 2,
"column_name": "Column2"
}
]
},
{"page_id": 2,
"page_name": "Page2",
"values": [
{
"column_id": 3,
"column_name": "Column1"
},
{
"column_id": 4,
"column_name": "Column2"
}
]
}
]}}]}
我可能可以通過編寫大量嵌套代碼來在服務和組中編寫 hashmap 來獲得它。 但感覺不是很Java-ish。 有沒有辦法我可以編寫另一個 POJO 來給我這個結果?
制作兩層:一層是 MySQL POJO model 和另一層 model (DTO),用於傳遞 Z50780F47F568 的響應 when you fetch the data from the MySQL POJO model and use a mapper class to convert the data from MySQL POJO model to DTO model and send the DTO model as a response. 在 DTO model 中,我們可以使用有助於設計 JSON 響應的注釋。
例如:LocalDataTime 變量將在響應中為您提供一個很長的詳細格式,因為我們使用序列化程序(注釋)來格式化它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.