如何将模型从API传递到组件

时间:2018-10-28 14:31:02

标签: angular spring-boot dto angular-fullstack

在后端和前端之间传输模型的最佳方法是什么。

  • 最好将后端的克隆在前端,即使不是全部 使用属性?
  • 还是使用DTO为每个用例仅转移必要的属性?

如果有最佳实践,设计模式或我感兴趣的其他建议。

有关信息,我的堆栈是Spring Boot和Angular 6。

3 个答案:

答案 0 :(得分:0)

如果不需要转换前端的传入数据,则可以使用后端模型,在Java中,可以使用捆绑包从Java模型生成打字稿模型:https://github.com/vojtechhabarta/typescript-generator

答案 1 :(得分:0)

尝试使用招摇伴侣

https://dzone.com/articles/using-swagger-to-connect-a-backend-to-an-angular-f

希望这会有所帮助

答案 2 :(得分:0)

我强烈建议DTO,并且我们一直在使用Visual Studio带有此Typewriter扩展名的DTO,以使.ts文件与.cs文件保持同步。

也许您可以做类似的事情。

https://frhagn.github.io/Typewriter/

Angular前端使用.ts版本,而C#后端使用.cs版本。 如果您需要.ts和.cs版本之间的任何差异,则可以编辑.tst(打字稿模板文件)以进行大量自定义。

这是我下面提出的最佳模式,它使我们可以嵌套Enums和其他Dto类:

${ 
    // Enable extension methods by adding using Typewriter.Extensions.*
    using Typewriter.Extensions.Types;
    string TypeWithNoArray(Type t) => t.Name.TrimEnd('[', ']');
}
/* DO NOT EDIT ANY .TS FILES WITH THIS COMMENT
    THESE .TS FILES ARE GENERATED BY A CORRESPONDING .CS FILE AND A .TST FILE
    BY USING THE TYPEWRITER EXTENSION:
    https://frhagn.github.io/Typewriter */
$Classes(*Dto*)[
$Properties(x => !x.Type.IsPrimitive || x.Type.IsEnum)[$Type[import { $TypeWithNoArray } from './$TypeWithNoArray';
]]
export class $Name {
    $Properties[public $name: $Type = $Type[$Default];
    ]$BaseClass[$Properties[public $name: $Type = $Type[$Default];]]
}
]
$Enums(*Dto*)[
export enum $Name {$Values[
    $name = $Value][,]
}
]