我需要使用转换器将json结果映射到我的本地类对象,所以我对此有一些想法:
请告诉我哪个更好?可能是另一个吗? 您有类似的经历吗? 谢谢。
答案 0 :(得分:1)
我认为获取转换类违反了SOLID的单一可重复性原则。
我认为最好的方法是让本地类对象具有一个函数或构造函数,并使用JSON结果来构建该类。
因此,转换的责任将在使用数据的类上。因此,如果您需要修改任何逻辑,则只需触摸相关的类,而无需触摸具有很多转换功能的庞大类。
@Karol Trybulec:
可注入服务应通过以下方式返回本地类:
export class TestService {
public constructor (private http: HttpClient) {
}
public callHttp (url: string, parameters: any): Observable<DTOTest> {
return this.http.get(url, {params: parameters})
.pipe<boolean>(map((result) => {
return of(new DTOTest(result));
}));
}
}
答案 1 :(得分:1)
首先,最好在后端进行转换。服务器应为前端返回友好的DTO。
@JFPicard解决方案很好,仅当您在Angular中为实体模型使用类时。然后,您可以像在ActiveDirectory模式中那样在模型中添加方法。
不幸的是,很多人正在使用实体模型的接口。这种方法在Angular中有很多好处。在这种情况下,将所有内容包装在可注入服务中会更好。稍后,您可以通过Angular DI机制来模拟该服务。是:
将此逻辑移至分离的可注入服务时,会将此逻辑封装在分离的层中。封装类中的所有内容将使此类变得繁琐,而将来模拟此功能将变得不那么容易。
PS。在Angular中使用纯类型脚本类不可注入(因此它们不是Angular服务)和包含任何应用程序逻辑总是让我感到恐惧。对我来说,这就像在DI容器外创建的ASP.NET中的“帮助程序”类,后来真的很麻烦。