服务层验证数据时应该返回给控制器什么?

问题描述 投票:0回答:1

我有一个小型汽车 API,由控制器、服务和存储库组成,我想验证服务层内的数据,并返回 200、404 或 400,并附上一条小消息,说明服务出现了什么问题。换句话说,我想把所有的逻辑从控制器移到服务层。

如何返回状态代码,如果是错误,从服务层到控制器是什么导致了错误?

API控制器方法:

        [HttpGet("GetById/{Id:int}", Name = "GetCar")]
        [ProducesResponseType(StatusCodes.Status200OK)]
        [ProducesResponseType(StatusCodes.Status404NotFound)]
        [ProducesResponseType(StatusCodes.Status400BadRequest)]

        public IActionResult GetById(int Id)
        {
            if (Id < 1)
            {
                ModelState.AddModelError("CarIdIsZero", "Car Id Must Not Be Less Than One !");
                return BadRequest(ModelState);
            }

            var car = _db.Car.FirstOrDefault(u => u.Id == Id);

            if (car == null)
            {
                ModelState.AddModelError("CarNotFound", "Car was not found !");
                return NotFound(ModelState);
            }

            return Ok(car);

        }

服务层方法:

public IActionResult GetById(int carId)
        {
            return;
        }

存储层方法:

    public IEnumerable<Car> Get()
        {
            return _db.Car;
        }
       
c# .net api design-patterns core
1个回答
0
投票

我不是 .net 方面的专家,对行业也有点陌生,但到目前为止我已经使用 Express js 从事过一些项目。 服务层的主要目标是与您提供的数据库进行交互并执行业务逻辑(数据操作等)。

现在服务层应该返回什么

The service layer then returns the result to the controller layer, which formats the response and returns it to the client.

这是什么意思 意味着无论您的服务执行什么操作,如果成功,它都会返回结果,例如:User....

但是如果有什么事情它会返回错误,并且根据该返回,您决定必须向客户端发送什么消息

© www.soinside.com 2019 - 2024. All rights reserved.