Entity Framework Core 使用的 Entity Model 是用来表示数据库里面的记录的。
而面向外部的 model 则表示了要传输的东西。这类 model 有时候叫做 Dto,有时候叫做 ViewModel。
举一个例子,人员的Entity Model如下:
最后一个字段表示人员的出生日期。
而它的面向外部的model:PersonDto是这样的:
可以看出,把 Entity Model 和 面向外部的 Model 分离开来会使得程序更加健壮、可靠和更易于进化。
假如数据库的表发生了变化,那么 Entity Model 类就需要随之变化,如果你使用同一个 Entity Model 作为 Web API 面向外部直接暴露的 Model 的话,那么 API 消费者就极有可能会遇到问题,因为它们无法预知资源添加、修改或是删除了某些属性。这也让 Web API 的版本控制非常困难,因为直接使用了 Entity Model 作为面向外部的 Model 的话,数据库就无法和 API 分开进化了。所以让两者分开是非常重要的。
HTTP HEAD 和 HTTP GET 之间的关系比较紧密。
HEAD 和 GET 几乎是一样的,只是有一点重要的不同:HEAD 的 API 不应该返回响应的 body,所以也就没有响应 Payload 了。
HEAD 可以用来在资源上获取一些信息,因为响应的 header 是会被返回的。
例如在支持缓存的系统里,HEAD 响应的 header 里可能会包含关于资源是否仍然有效的信息,或者资源是否近期被更新了。
另一个例子就是检查API是否可以访问,也就是说资源是否存在。