• ASP.NET Core WebAPI学习-2


    目录:

    1. ASP.NET Core WebAPI学习-1
    2. ASP.NET Core WebAPI学习-2
    3. ASP.NET Core WebAPI学习-3
    4. ASP.NET Core WebAPI学习-4
    5. ASP.NET Core WebAPI学习-5
    6. ASP.NET Core WebAPI学习-6

    使用Controller

    ApiController特性的作用:
    ApiController是应用在Controller类,会启用以下行为:

    1. 要求使用特性路由(Attribute Routing)
    2. 自动HTTP 400响应
    3. 推断参数的绑定源
    4. Mulitpart/form-data请求推断
    5. 错误状态代码的问题详细信息

    CompanyController

    1. 继承自ControllerBase
    2. 使用[ApiController]特性
    3. 配置路由
    [Route(template: "api/companies")]
    [ApiController]
    public class CompaniesController : ControllerBase
    {
        private readonly ICompanyRepository companyRepository;
        private readonly IMapper mapper;
        //配置依赖注入
        public CompaniesController(ICompanyRepository companyRepository, IMapper mapper)
        {
            this.companyRepository = companyRepository ??
                throw new ArgumentNullException(nameof(companyRepository));
            this.mapper = mapper ??
                throw new ArgumentNullException(nameof(mapper));
        }
        //获取所有公司数据,返回格式为json
        [HttpGet]
        public async Task<IActionResult> GetCompanies()
        {
        	var companies = await companyRepository.GetCompaniesAsync();
            return new JsonResult(companies);
        }
    }
    

    Http状态码

    参考 Asp.Net Core通过HttpStatusCode状态处理响应结果
    HttpStatusCode

    HTTP状态码会告诉API的消费者以下事情:

    • 请求是否执行成功了
    • 如果请求失败了,那么谁为它负责

    **HTTP的状态码有很多,但是Web API不一定需要支持所有的状态码。HTTP状态码一共分为5个级别: **

    1xx,属于信息性的状态码。Web API并不使用1xx的状态码。

    2xx,意味着请求执行的很成功。
    200 - Ok,表示请求成功;
    201 - Created,请求成功并创建了资源;
    204 - No Content,请求成功,但是不应该返回任何东西,例如删除操作。

    3xx,用于跳转。例如告诉搜素引擎,某个页面的网址已经永久的改变了。绝大多数的Web API都不需要使用这类状态码。

    4xx,客户端错误:
    400 - Bad Request,表示API消费者发送到服务器的请求是有错误的;
    401 - Unauthorized,表示没有提供授权信息或者提供的授权信息不正确;
    403 - Forbidden,表示身份认证已经成功,但是已认证的用户却无法访问请求的资源;
    404 - Not Found,表示请求的资源不存在;
    405 - Method not allowed,当尝试发送请求到资源的时候,使用了不被支持的HTTP方法时,就会返回405状态码;
    406 - Not acceptable,这表示API消费者请求的表述格式并不被Web API所支持,并且API不会提供默认的表述格式。例如请求的媒体类型是application/xml,但是Web API仅支持application/json类型,并且API不会将application/json作为默认格式提供;
    409 - Conflict,表示请求与服务器当前状态冲突。通常指更新资源时发生的冲突,例如,当你编辑某个资源的时候,该资源在服务器上又进行了更新,所以你编辑的资源版本和服务器的不一致。当然有时候也用来表示你想要创建的资源在服务器上已经存在了。它就是用来处理并发问题的状态码。
    415 - Unsupported media type,与406正好相反,有一些请求必须带着数据发往服务器,这些数据都属于特定的媒体类型,如果API不支持该媒体类型格式,415就会被返回。
    422 - Unprocessable entity,它是HTTP扩展协议的一部分。它说明服务器已经懂得了实体的Content Type,也就是说415状态码肯定不合适;此外,实体的语法也没有问题,所以400也不合适。但是服务器仍然无法处理这个实体数据,这时就可以返回422。所以它通常是用来表示语意上有错误,通常就表示实体验证的错误。

    5xx,服务器错误:
    500 - Internal server error,表示服务器出现了错误,客户端无能为力,只能以后再试试了。

    ASP.NET Core中有关状态码的方法:
    NotFound(),OK(),NoContent(),BadRequest(),Conflict(),Created(),Forbid(),StatusCode()

    错误和故障

    系统时不时的会出现一些问题,这些问题可以划分为两类:错误和故障。

    错误 Errors

    错误通常是由API的消费者引起的。API消费者请求时传递的数据是不合理的,这时API就会正常的将其拒绝。例如,请求的凭证是不合理的,或者请求的参数不合理等等。
    这些就是HTTP 4xx错误。
    错误并不会影响API的可用性。

    故障 Faults

    故障是指,针对一个合理的请求,API无法返回它的响应。 换句话说就是API引起的问题。
    这些是HTTP 5xx错误。
    故障确实会对API整体的可用性造成影响。

  • 相关阅读:
    java Set(集合)
    java Stack(栈)
    java LinkedList(链表)
    简单的maven配置
    Linux下如何查找.sh后缀的文件
    linux 下shell中if的“-e,-d,-f”是什么意思
    linux重定向
    shell中$0,$?,$!等的特殊用法
    向shell脚本中传入参数
    mysql索引
  • 原文地址:https://www.cnblogs.com/AlexanderZhao/p/12878832.html
Copyright © 2020-2023  润新知