入参绑定

入参应该定义成实体,而不是多个参数,方便扩展。[FromBody]和[FromUrl]特性也最好加上。

  1. public ActionResult<Pet> Create([FromBody] Pet pet)
  1. public class Pet
  2. {
  3. public string Name { get; set; }
  4. [FromQuery] // Attribute is ignored.
  5. public string Breed { get; set; }
  6. }

入参校验

简单的入参校验可通过模型验证特性来简化处理,如[Required]、[Range]等。

  1. public class Movie
  2. {
  3. public int Id { get; set; }
  4. [Required]
  5. [StringLength(100)]
  6. public string Title { get; set; }
  7. [Range(0, 999.99)]
  8. public decimal Price { get; set; }
  9. [Required]
  10. public Genre Genre { get; set; }
  11. public bool Preorder { get; set; }
  12. }

响应

数据格式

一般Json数据格式返回,参考格式如下。

  1. {
  2. "Code":1000,
  3. "Message":"处理成功",
  4. "Data":{}
  5. }

根据系统之间约定的Code判断处理情况,如参数缺失等,Message作为提示信息,而不是使用http状态码。根据需要也可附带timestamp记录返回的时间。

Controller的返回类型

虽然返回的数据格式是Json,但Controller的返回类型不建议使用JsonResult,IActionResult等,推荐使用ActionResult< T >或直接返回实体T,再通过AOP返回Json,可在Swagger下正常展示实体的字段。

  1. public ActionResult<Product> GetById(int id)
  2. {
  3. if (!_repository.TryGetProduct(id, out var product))
  4. {
  5. return NotFound();
  6. }
  7. return product;
  8. }

返回枚举值还是文本

当需要对该值进行展示外的逻辑处理时,就应该返回枚举值,反之,直接返回文本可以简化前端的处理。

Web API入参,响应规范的更多相关文章

  1. ASP.NET Web API 记录请求响应数据到日志的一个方法

    原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个 ...

  2. Web Api 在线参考文档

    参考文档: https://developer.mozilla.org/zh-CN/docs/Web/API

  3. 如何设计出优美的Web API?

    概述 WEB API的应用场景非常丰富,例如:将已有系统的功能或数据开放给合作伙伴或生态圈:对外发布可嵌入到其他网页的微件:构建前后端分离的WEB应用:开发跨不同终端的移动应用:集成公司内部不同系统等 ...

  4. ASP.NET Web API 2 对 CORS 的支持

    CORS概念 跨域资源共享 (CORS) 是一种万维网联合会 (W3C) 规范(通常被认为是 HTML5 的一部分),它可让 JavaScript 克服由浏览器施加的同域策略安全限制. 所谓同域策略, ...

  5. 【ASP.NET Web API教程】2.1 创建支持CRUD操作的Web API

    原文 [ASP.NET Web API教程]2.1 创建支持CRUD操作的Web API 2.1 Creating a Web API that Supports CRUD Operations2.1 ...

  6. Web API 2 对 CORS 的支持

    Web API 2 对 CORS 的支持 CORS概念 跨域资源共享 (CORS) 是一种万维网联合会 (W3C) 规范(通常被认为是 HTML5 的一部分),它可让 JavaScript 克服由浏览 ...

  7. Web APi之认证(Authentication)两种实现方式【二】(十三)

    前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...

  8. 【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查

    本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查.目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的.下面我们通过创建一个简单的Web API来管理联系 ...

  9. 转 Web APi之认证(Authentication)两种实现方式【二】(十三)

    前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再废叙述废话. 序言 对于所谓的认证说到 ...

随机推荐

  1. Cmake编译库注意

    在生成工程文件后要在Debug x64模式下菜单栏选择:生成->生成解决方案,等10几分钟然后在Cmake Targets下INSTALL,点击“仅用于项目->仅生成INSTALL”,然后 ...

  2. js返回时间差

    function CalcTimeSub(endTime, startTime, type) { var bool = endTime == defaultDateTime || startTime ...

  3. Educational Codeforces Round 46 (Rated for Div. 2) D

    dp[i]表示一定包含第I个点的好的子序列个数,那么最终答案就是求dp[0] + dp[1] + .... + dp[n-1] 最终的子序列被分成了很多块,因此很明显我们枚举第一块,第一块和剩下的再去 ...

  4. C# 引入Sqlite 未能加载文件或程序集“System.Data.SQLite

    个人博客 地址:https://www.wenhaofan.com/article/20190501224046 问题 在Visual Studio 中 使用NuGet 通过 install-pack ...

  5. Python面向对象三大特性(封装、继承、多态)

    封装 类中把某些属性和方法隐藏起来,或者定义为私有,只在类的内部使用,在类的外部无法访问,或者留下少量的接口(函数)供外部访问:从上一篇文章中的私有属性与私有方法中的代码体现了该特性. class m ...

  6. Dart单例模式最佳实践

    /// Created by Capt. Michael @ CaptNotes.com on 02/17/2020. class Singleton { Singleton._(); static ...

  7. Python中io的open()在PyCharm环境下报错和路劲的问题

    PS:我也是初学者,上班空闲时间学习学习Python.今天学到io的时候,遇到了两个用PyCharm环境编写代码的小白错误,如下: 两个问题都是如下代码: 1. 第一个问题:当写好代码之后,点击运行报 ...

  8. 【E20200105-1】Centos 7.x 下vsftpd配置文件常用配置详解

    centos 7 下vsftp的安装和配置可以参见<[E20200102-1]centos 7 下vsftp的安装和配置> ########匿名用户(anonymous)设置####### ...

  9. 服务&软件&基础设施的区别

    IT基础设施: 软件 硬件 数据库相关DBM 网络相关 networking(网络通信) 以上4个会出现的比较多 application people 上面的东西都能提供IT服务 一半的互联网公司都会 ...

  10. burpsuite各个板块儿详细讲解

    burpsuite实战指南,想要的都在这里:https://t0data.gitbooks.io/burpsuite/content/