DTO的理解
- 首要的作用,我认为就是减少原生对象的多余参数。包括为了安全,有时候也为了节约流量。例如:密码,你就不能返回到前端。因为不安全。 其次假如说:获取博客列表的时候,也不能返回博客全文吧。顶多就返回标题,id,和前几句。
- 我认为第二个作用是减少重复代码。组装对象。假设用户的基本信息,详细信息,以及一些额外的附加数据。现在要返回给前台,你可以选择拼成map返回。但是map的缺点是,无法复用。假如需要增加或者删除某个参数还好,假如某个参数名写错了,而你又有几十个地方用到了这个单词,那就需要改几十个。而DTO,你只需要改一处即可。其次,可以规范参数类型,因为map返回大多都是string直接返回,在存数据的时候也无法校验数据类型是否是想要的类型。假如前台要的单位是分,你后台直接传了个浮点回去,前端就会找你麻烦。但是如果用DTO,你直接把前端的数据要求放进DTO里,你如果直接把不符合要求的类型放进去,就会报错。同时,也更便于你在DTO类里直接写注释,便于别人阅读。
作者:Cocoon
链接:https://www.zhihu.com/question/348822475/answer/851206595
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
DTO的理解的更多相关文章
- 关于DTO的理解
转自大神loveis715博文:http://www.cnblogs.com/loveis715/p/4379656.html 在一个web服务的实现中,我们常常需要访问数据库,并将从数据库中取得的数 ...
- 应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较
本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行比较. 领域实体为何不能一统江湖? 当你阅读 ...
- 数据传输对象(DTO)介绍及各类型实体比较
数据传输对象(DTO)介绍及各类型实体比较 本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行 ...
- 正确理解DTO、值对象和POCO
今天推荐的文章比较技术化也比较简单,但是对于一些初学者而言,可能也是容易搞混的概念:就是如何理解DTO.值对象和POCO之间的区别. 所谓DTO就是数据传输对象(Data Transfer Objec ...
- Java DTO(data transfer object)的理解
首先明白springboot每层 model层 model层即数据库实体层,也被称为entity层,pojo层. 一般数据库一张表对应一个实体类,类属性同表字段一一对应. Model层是数据层: Ta ...
- DTO的一些理解(转载)
1.什么是DTO DTO(Data Tansfer Object)即数据传输对象.之前不明白有些框架中为什么要专门定义DTO来绑定表现层中的数据,为什么不能直接用实体模型呢,有了DTO同时还要维护DT ...
- 【AutoMapper官方文档】DTO与Domin Model相互转换(上)
写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...
- 【AutoMapper官方文档】DTO与Domin Model相互转换(中)
写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...
- 【AutoMapper官方文档】DTO与Domin Model相互转换(下)
写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...
- DTO – 服务实现中的核心数据
在一个Web服务的实现中,我们常常需要访问数据库,并将从数据库中所取得的数据显示在用户页面中.这样做的一个问题是:用于在用户页面上展示的数据和从数据库中取得的数据常常具有较大区别.在这种情况下,我们常 ...
随机推荐
- UI动画 - CATransaction
前言 1 - CAAnimation 并不是一个单纯的实现动画的框架,它原本叫 Layer Kit.管理着树状结构的图层数据,并快速组合这些图层,最终构成了一切可视化的基础 2 - 在构建可视化,也就 ...
- uniapp for显示数据改变时,绑定的list值同时改变
<template> <view class="container"> <uni-table> <uni-tr v-for="( ...
- python实现web应用程序(1)虚拟环境与Django
前言 在这个系列博客中,我将使用python实现一个名为"OI笔记"的项目. 1 建立项目目录 第一步,我们先为自己的项目建立一个目录. 首先,打开终端. win+r键,然后输入c ...
- 【Selenium IDE】下载安装Chrome和Firefox插件IDE ide了解就行 不是重点 重点是写脚本
下载安装Chrome和Firefox插件IDE 1.Chrome的IDE安装(1)由于chrome的限制所以提供了一个小方法:链接: https://www.crx4chrome.com/crx/77 ...
- 用xlutils.copy写入中文的问题
用xlutils.copy 将中文写入excel文档中 遇到的问题1: Traceback:Traceback (most recent call last):File "C:\Users\ ...
- linux 安装ssl 失败原因
配置文件成功的情况下打不开:开放端口 设置端口 server { listen 443 default ssl; //需要加不然会显示404 default ssl server_name 域名; s ...
- sqlalchemy 数据类型
- Python学习:Mysql(三)索引
1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据.对于索引,会保存在额外的文件中. 2.索引种类 普通索引:仅加速查询 唯一索引:加速查询 + 列值唯一(可以有 ...
- LaTex【五】latex导入中文包,支持中文显示
\documentclass{article} \usepackage{CJKutf8} \begin{document} \begin{CJK}{UTF8}{gbsn} 中文样例,UTF-8编码,字 ...
- Path类,文件操作的路径用法
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...