首页 > 其他分享 >关于 WebApi 返回值的探究

关于 WebApi 返回值的探究

时间:2024-03-22 16:36:31浏览次数:24  
标签:WebApi IActionResult 前端 ActionResult 探究 返回值 null

关于 WebApi 返回值的探究

写这篇文章的原因主要是,工作时间长了,各种乱七八糟的项目和框架都见识过了,前端后端都写过,怎么说也算得上是全栈了,见过一堆不规范的代码,特别是这个webapi的返回值问题

这里以asp.net core为例,不讨论MVC的情况

IActionResult 和 ActionResult

这里主要是想写一下这俩的区别,我也容易忘

  • IActionResult:根据官方文档,这个返回值主要是用于多个返回类型,说白了就是能返回object
  • ActionResult<T>:这个有一个泛型,一看就知道这个是限制返回类型的

那么说下我的使用习惯,如果需要返回值,选ActionResult<T>,无返回值则选IActionResult

封装统一返回值

大部分都长这个样子

{
    code: null,
    status: null,
    message: null,
    data: null
}

就我见过的代码而言,这里算是个重灾区,我是不太明白为什么都喜欢搞这个,java的习惯?

统一返回值存在的问题

  • 首先是后端代码的可读性,都这么写返回值了,那么肯定不是ActionResult,都偷懒写IActionResult了,鬼知道这个函数返回什么,过一段时间你还记得住?
    如果这个函数还返回别的类型呢?那我后端强类型的意义是什么,跟写js一样,你这后端还是强类型?
    你说这是统一返回值,那如果你这代码还没到中间件就异常了呢?你还统一吗?

  • 然后再来说说前端的问题,上面说了鬼知道这个返回值是什么
    前端还要先先等你写好这个接口,再试一遍这个接口,然后再从这一坨返回值里面一层一层空值判断取数据,对不同类型的返回值做处理,你这前后端分离个鬼
    js还好说,如果我的前端是WPF或Blazor呢?json字符串转JObject或者Dictionary然后用索引取数据?这空值处理和数据转换更麻烦
    给这个后端写过一段时间前端我就再也不想看见这一坨东西了,直接重写

总结,不要使用统一返回值,你可以通过中间件给状态码使用不同的返回值,这样前端处理起来也方便

关于 WebApi 返回值的探究 结束

规范很重要

标签:WebApi,IActionResult,前端,ActionResult,探究,返回值,null
From: https://www.cnblogs.com/zzy-tongzhi-cnblog/p/18089648

相关文章

  • .Net MinimalApis响应返回值
    前言文本主要讲MinimalApis中的使用自定义IResultModel和系统自带IResult做响应返回值。MinimalApis支持以下类型的返回值:string-这包括Task<string>和ValueTask<string>T(任何其他类型)-这包括Task<T>和ValueTask<T>基于IResult-这包括Task<IResult>和......
  • <爬虫部署,进阶Docker>----第十章 探究一下Docker Compose
    前言:        DockerCompose是一个用于定义和运行多容器应用程序的工具,它提供了一种简化和自动化容器编排的方式。在理解DockerCompose的背景之前,让我们先回顾一下容器化技术的发展。容器化技术的出现使得应用程序的部署和管理变得更加轻松和灵活。容器化通过......
  • golang 多返回值的实现原理-转载
    之前一次面试时,面试官问到你知道golang的多返回值的实现吗,一脸懵逼,平时主要注重项目应用开发,对这块确实没关注,答得不好,各位大佬,以后建议也加强下基础哦。今天看看golang中多返回值的实现。可以简单认为c中多返回值的实现,其实就是通过寄存器将返回参数以指针形式传入传入参......
  • C++ 重载运算符返回值问题
    事实上,我们的重载运算符返回void、返回对象本身、返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值。那么什么情况下要返回对象的引用呢?原因有两个:允许进行连续赋值;防止返回对象(返回对象也可以进行连续赋值(常规的情况,如a=b=c,而不......
  • C++ 返回值优化
    1.函数返回机制函数返回值的传递分为两种情况:当返回的对象大小不超过8字节时,通过寄存器(eaxedx)返回。当返回的对象大小大于8字节时,通过栈返回。此处需要注意的时候,如果返回的是struct或者class对象,即使其大小不大于8字节,也是通过栈返回的。在通过栈返回的时候,栈上会有一块......
  • Mysql带返回值与不带返回值的2种存储过程
    时间:2018-03-3000:25:57过程1:带返回值:dropprocedureifexistsproc_addNum;createprocedureproc_addNum(inxint,inyint,outsumint)BEGINSETsum=x+y;end然后,执行过程,out输出返回值:callproc_addNum(2,3,@sum);select@sum;过程2:不带返回值:dropp......
  • webapi通过docker部署到Linux的两种方式
    docker安装官网删除dockersudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\docker-logrotate\docker-engine安装sudoyuminstall-yyum-utilssudoyum-config-manage......
  • java:形参和返回值
    一、抽象类名作为形参和返回值方法形参是抽象类名,其实需要的是该抽象类的子类对象方法的返回值是抽象类名,其实返回的是该抽象类的子类对象二、接口名称作为形参和返回值方法的形参是接口名,其实需要的是该接口的实现类对象方法返回值是接口名,其实返回的是该接口的实现类对象......
  • .Net WebApi中实现自动依赖注入的三种方法
    前言该文仅供学习参考,如有问题请指正。依赖关系注入(DI),是一种软件设计模式,这是一种在类及其依赖项之间实现控制反转(IoC)的技术。.NET中的依赖关系注入是框架的内置部分,与配置、日志记录和选项模式一样。生命周期依赖注入有以下三种生命周期瞬时(Transient):每次......
  • 1688中国站获得联系方式 API 返回值
    公共参数名称类型必须描述keyString是免费申请调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[yes,no]默认yes,将调用缓存的数据,速度比较快result_typeString否[j......