zoukankan      html  css  js  c++  java
  • P21 创建 Company 资源 POST




    现在一共有两个实体

    争对CompanyController创建Action

    CompanyDto现在主要是用来做输出的,我们的post是做输入,输入参数和输出参数通常是不一样的。当然也偶尔有时候是一模一样的

    添加CompanyAddDto信用做新增的实体。不同作用的dto还是都要单独建立的,以为随着业务需求的变化,它后续有可能还是不一样的。分成多个类dto比较有利于重构。查询、创建、更新这三类分别是三个不同的dto

    这里的[FromBody]可写可不写。

    争对低版本的.net core的版本,如果传进来的对象是空的 就抛出400错误。

    博主记得最早的.net core版本里面好像是没有[ApiController]这个Attribute的,


    在那个时候或者是你没有使用[ApiController]这个Attribtue的是时候,就需要检查下请求里面body里面的参数,是否正确的转化成了我们的CompanyAddDto这个类。
    当请求的body里面什么都没有的时候,或者是里面的参数不正确的时候,那么我们的这个company参数就会变成null


    现在我们就不需要手动的去检查传递的companyAddDto对象是否为空对象,因为我们的Controller使用了[ApiController]这个Attribute。
    如果遇到了刚才说的那种情况传递说来的对象为空,那么框架会自动返回400 BadRequest

    所以这里我们可以把这段代码去掉了。框架会自动的帮我们判断,并返回400BadRequest

    Mapper映射

    传递过来的对象,我们首先要转换为Company

    AutoMapper的映射

    在这句话执行之后呢,实际上这个entity并没有添加到数据库里面。

    我们F12进来看具体的代码。最后一行代码,这个实体目前只是被添加到了DbContext里面。

    想要保存到数据库内就要调用DbContext的SaveChangesAsync方法。我们在Repisitory里面已经封装了这个方法。

    这里我们再调用一个saveAsync方法就可以了。这个Repository对象我们可以把他看做是一个黑盒,controller不需要知道里面的实现细节。
    这个黑盒也可以说对于Controller来说他就是一个接口。所以我不知道他的实现细节,到底有没有包含记录日志 啊,或者是有没有处理异常 啊。
    具体的实现细节对Controller来说都是未知的。
    假如说controller在插入数据库的时候除了问题,抛出了异常,那么其实我也不用处理。因为抛出异常后,框架会保证返回500错误。所以这里我们就不处理异常了。

    保存成功后,使用CreatedAtRoute()方法,





    把dto改个名字,叫做returnDto

    运行测试


    最好再指定下Accept。就是返回接收的格式

    注意是post请求。

    加上判断,Employee不为空才去执行下面的操作。刚开始创建一个公司是没有员工。



    请求的body设置。

    相应的地址最后有个Location。通过这个地址我们可以获取到这个新创建的资源。



    再次执行这个post请求。新生成的公司 id不一样了。说明这个资源又被创建了一个。

    我们再执行以下get,获取所有的公司

    测试空的body



    返回的是400错误。这代表的是客户端引起的错误。

    故意把name改成布尔类型的为false

    发送请求,依然返回的是400 错误。这都因为我们的Controller使用了ApiController这个Attribute


     

    结束

  • 相关阅读:
    客户端用java api 远程操作HDFS以及远程提交MR任务(源码和异常处理)
    HighCharts终极版本
    Highcharts网页版
    情感化设计中的手绘应用表现
    前端批量下载文件
    PHP 大文件下载,文件传输,支持断点续传。 2g以上超大文件也有效
    PHP超大文件下载,断点续传下载
    php下载大文件,支持断点续传案例
    解决PHP超大文件下载,断点续传下载的方法详解
    PHP如何异步断点续传大文件
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/12546169.html
Copyright © 2011-2022 走看看