【问题标题】:How to pass models from API to components如何将模型从 API 传递到组件
【发布时间】:2019-04-01 14:56:47
【问题描述】:

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

  • 是否最好在前端克隆后端,即使不是全部 使用属性?
  • 或者使用 DTO 仅传输每个用例的必要属性?

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

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

【问题讨论】:

    标签: angular spring-boot dto angular-fullstack


    【解决方案1】:

    如果不需要为前端转换传入的数据,你可以使用后端模型,在java中你可以使用bundle从java模型生成typescript模型:https://github.com/vojtechhabarta/typescript-generator

    【讨论】:

      【解决方案2】:

      尝试使用swagger mate

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

      希望对你有帮助

      【讨论】:

        【解决方案3】:

        我强烈推荐 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][,]
        }
        ]
        

        【讨论】:

        • 请问有没有办法在 Java 中使用这个工具?
        • 我正在使用 IntelliJ IDEA
        猜你喜欢
        • 1970-01-01
        • 2017-06-22
        • 2020-05-05
        • 1970-01-01
        • 2017-07-09
        • 2018-02-03
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        相关资源
        最近更新 更多