第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring-boot hatoas 將 hatoas 鏈接轉(zhuǎn)換為對象而不是集合

Spring-boot hatoas 將 hatoas 鏈接轉(zhuǎn)換為對象而不是集合

牧羊人nacy 2022-05-25 16:19:51
我正在使用 spring-boot 和 Hateoas。我的一個 API 將 hatoas 鏈接公開為集合"_links":[而不是對象"_links":{。我不確定為什么它使用數(shù)組表示法而不是對象。請在下面找到代碼。任何幫助,將不勝感激。public class Book {    private String id;    private BookInfo bookInfo;}public class BookInfo extends ResourceSupport{    private String bookUid;    private String bookName;    private String authhorName;    private String bookGenre;    @Override    @JsonProperty("_links")    @JsonInclude(JsonInclude.Include.NON_NULL)    public List<Link> getLinks() {        return super.getLinks();    }}@RestController@RequestMapping(value = "/api/v1/", produces = APP_JSON)public class BookController {    @GetMapping("getBooks")    public ResponseEntity<Book> getTransactionStatus() {        Book book = bookRepo.getAllBooks();        book.getBookInfo().add(addLinks(book.getId()));        return ResponseEntity.ok().contentType(MediaType.valueOf(APP_JSON)).body(book);    }      public SuperLink getBookInfoLinks(String bookUid) {        return new SuperLink(                linkTo(methodOn(BookController.class).getBook(bookUid))                        .withRel("retrieve-book").expand(),APP_JSON);    }}public class SuperLink extends Link {    @XmlAttribute    @JsonInclude(JsonInclude.Include.NON_NULL)    private String accepts;    public SuperLink(Link link) {        super(link.getHref(), link.getRel());    }    public SuperLink(Link link, String accepts) {        super(link.getHref(), link.getRel());        this.accepts = accepts;    }    public String getAccepts() {        return accepts;    }    public void setAccepts(String accepts) {        this.accepts = accepts;    }}實際輸出{   "id":"bookId",   "BookInfo":{      "bookUid":"bookUid",      "_links":[         {            "rel":"retrieve-book",            "href":"http://localhost/api/v1/book/bookId",            "accepts":"application/json"         }      ]   }}
查看完整描述

3 回答

?
慕的地10843

TA貢獻1785條經(jīng)驗 獲得超8個贊

我無法添加評論以包含我的建議。所以,在這里提一下:參考這個:Embed object instead of collection in Spring HATEOAS


查看完整回答
反對 回復(fù) 2022-05-25
?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

鏈接應(yīng)序列化為地圖,而不是列表。您可以自己將其轉(zhuǎn)換為地圖,也可以為此使用自定義序列化器/反序列化器。幸運的是 Spring 已經(jīng)有了它們:


@Override

@JsonProperty("_links")

@JsonInclude(Include.NON_EMPTY)

@JsonSerialize(using = Jackson2HalModule.HalLinkListSerializer.class)

@JsonDeserialize(using = Jackson2HalModule.HalLinkListDeserializer.class)

public List<Link> getLinks() {

  return super.getLinks();

}

- - 編輯


為了使其工作,您將需要halJacksonHttpMessageConverter消息轉(zhuǎn)換器列表中的 bean。創(chuàng)建一個WebMvcConfigurer并將其添加halJacksonHttpMessageConverter到方法中的轉(zhuǎn)換器extendMessageConverters。


@Autowired

private HttpMessageConverter halJacksonHttpMessageConverter;


public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {

  converters.add(halJacksonHttpMessageConverter);

}

您應(yīng)該將其添加到列表的前面,或jacksonHttpMessageConverter從列表中刪除原始文件。


查看完整回答
反對 回復(fù) 2022-05-25
?
眼眸繁星

TA貢獻1873條經(jīng)驗 獲得超9個贊

發(fā)生這種情況是因為您在代碼中使用了 List 。


 @Override

 @JsonProperty("_links")

 @JsonInclude(JsonInclude.Include.NON_NULL)

 public List<Link> getLinks() {

    return super.getLinks();

 }

您應(yīng)該使用鏈接對象而不是鏈接列表。


查看完整回答
反對 回復(fù) 2022-05-25
  • 3 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號