如何定义hateoas链接的类型?

问题描述 投票:0回答:1

让我们采取以下休息回应,

{
   id: 123,
   name : "test",
   addressId : 4
   _links : {
       self : {
                href : "xyz",
                method : "GET"
             },
        address : {
                href : "xyz/address/4",
                method : "GET"
             }
   }
}

有没有在这里为"_links"定义类型?我可以想象的是我可以定义类似的东西,

interface HateoasUrl {
    href : string;
    method : string; 
}

interface HateoasKeyValuePair{
      [key: string] : HateoasUrl;
}

但不知何故,它似​​乎不正确,因为_links中会有多个键值。但是这种类型表示只能有一个关键值。那么如何为一个可以有多个属性的对象定义类型呢?

typescript typescript2.0
1个回答
1
投票

我不完全确定这是否是您想要的,但我将此问题解释为:“我如何使用打字稿来模拟HAL文档?”。我假设HAL,因为你使用_links属性,即使HAL没有在链接上指定method属性。

我这样做有点像这样:

interface HalLink {
  href: string;
  type: string;
}

interface HalLinks {
   [s: string]: HalLink | HalLink[];
}

这里我们有一个链接接口,另一个类型代表_links对象。 _links对象中的每个项目可以是单个HAL链接,也可以是HAL链接数组。

© www.soinside.com 2019 - 2024. All rights reserved.