這是我的第二個問題在幾天內處理春季數據休息和HATEOAS鏈接。春天的數據休息HATEOAS鏈接和HTML選擇下拉
TL;博士
如何將我的應用程序中使用了鏈接,「多對一」屬性來填充「當前值」爲一個HTML選擇下拉?
「春天的數據休息」生成的鏈接行爲與「老學校ID」不同。
語境
- 轉換某個應用彈簧JPA和彈簧數據其餘部分。按照以下
- 我添加了一個投影名 '全' 到
- 簡單 '的產品/類別' 表結構 '加入/獲取' 描述
表
*Product*
---------
Product ID
Product Name
Category ID
*Category*
---------
Category ID
Category Name
彈簧數據其餘域對象
產品
@Entity
@Table(name="products")
public class Products
{
private static final long serialVersionUID = 5697367593400296932L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long id;
public String product_name;
@ManyToOne(optional = false,cascade= CascadeType.MERGE)
@JoinColumn(name = "category_id")
private ProductCategory productCategory;
public Products(){}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Products(String product_name) {
this.product_name = product_name;
}
public String getProduct_name() {
return product_name;
}
public void setProduct_name(String product_name) {
this.product_name = product_name;
}
public ProductCategory getProductCategory()
{
return productCategory;
}
public void setProductCategory(ProductCategory pProductCategory)
{
productCategory = pProductCategory;
}
@Projection(name = "full", types = { Products.class })
interface VirtualProjection
{
String getProductName() ;
@Value("#{target.productCategory.category}")
String getCategory();
}
}
產品類別
@Entity
@Table(name="productcat")
public class ProductCategory implements Serializable{
private static final long serialVersionUID = 890485159724195243L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long id;
public String category;
@OneToMany(mappedBy = "productCategory", cascade = CascadeType.ALL)
@JsonBackReference
Set<Products> products;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public Set<Products> getProducts() {
return products;
}
}
問題:在對象
當角客戶端檢索一個產品類別的列表,值之間的阻抗不匹配,該產品的類別鏈接'的產品類別如下所示:
href" : "http://localhost:8080/api/rest/products/8/productCategory"
當客戶端獲取的「產品類別」列表,鏈接的類別如下:
href": "http://localhost:8080/api/rest/productcat/4"
這裏的「選擇」的代碼。如果「product.productCategory」爲「選項」設置了一個值,UI將僅顯示選擇。
<select ng-model="product.productCategory >
<option value="http://localhost:8080/api/rest/productcat/1">Foo Product Type
</option>
<option value="http://localhost:8080/api/rest/productcat/2">Bar Product Type
</option>
<option value="http://localhost:8080/api/rest/productcat/3">Baz Product Type
</option>
</select>
問題
如何編寫我的服務器API,使 「生成的鏈接」 客戶 友好嗎?什麼是最靈活的方法?
我是否應該更改API以接收更新的「值」而不是「ID/Links」,即類別名稱,而不是ID? (即並按名稱查找類別並在服務器端進行更新)
您推薦使用哪些javascript/angular工具和技術來處理鏈接?