ASP.NET Core WebAPI的异步及返回值

devtools/2025/2/2 20:39:27/

目录

Action方法的异步

Action方法参数

捕捉URL占位符

捕捉QueryString的值

JSON报文体

其他方式


Action方法的异步

  1. Action方法既可以同步也可以异步。
  2. 异步Action方法的名字一般不需要以Async结尾。
  3. Web API中Action方法的返回值如果是普通数据类型,那么返回值就会默认被序列化为Json格式。
  4. Web API中的Action方法的返回值同样支持IActionResult类型,不包含类型信息,因此Swagger等无法推断出类型,所以推荐用ActionResult<T>,它支持类型转换,从而用起来更简单
[HttpGet]
public ActionResult<int> GetId(long id)
{if (id == 1){return 88;}else if (id == 2){return 99;}else{return NotFound("id错误");}
}

Action方法参数

捕捉URL占位符

  1. 在[HttpGet]、[HttpPost]等中使用占位符,比如{schoolName},捕捉路径中的内容,从而供Action方法的参数使用。
  2. 捕捉的值会被自动赋值给Action中同名的参数;如果名字不一致,可以用[FromRoute(Name="名字")]
  1. /Person/GetStudent/school/MIT/class/2025
  2. [HttpGet("school/{ schoolName}/class/{ classNo}")]

捕捉QueryString的值

使用[FromQuery]来获取QueryString中的值。如果名字一致,只要为参数添加[FromQuery]即可;而如果名字不一致,[FromQuery(Name = 名字)]。QueryString和Route可以混用。

[HttpGet("students/school/{schoolName}/class/{classNo}")]
public Person GetStudent([FromRoute(Name = "schoolName")] string schoolName, [FromRoute(Name = "classNo")] long classNo)
{return new Person(classNo, schoolName, 18);
}

JSON报文体

  1. Web API的开发模式下,Json格式的请求体是主流。
  2. 只要声明一个模型类和Json请求的格式一致即可。
  3. 也是可以把从URL获取参数、从请求报文体获取数据等这些混合使用。
     [HttpPost("classId/{classId}")]public ActionResult<long> AddNew(long classId, StudentModel s)
  4. 一定要设定请求头中的Content-Type为application/json,而且数据必须是合法的json格式。

其他方式

Web API中很少用的方式:
1、从Content-Type为multipart/form-data的请求中获取数据的[FromForm]
2、从请求报文头中获取值的[FromHeader]。
 


http://www.ppmy.cn/devtools/155533.html

相关文章

【BQ3568HM开发板】深入解析智能家居中控屏工程的NAPI接口设计

目录 引言 一、NAPI接口概述 二、NAPI接口设计 1. 接口定义 2. 接口实现 三、NAPI接口在智能家居中控屏中的应用 1. 灯光控制 2. 窗帘控制 四、总结 本文收发于电子发烧友论坛&#xff1a;https://bbs.elecfans.com/jishu_2474863_1_1.html。 引言 在智能家居中控屏…

开源智慧园区管理系统对比五款主流产品探索智能运营新模式

内容概要 在这个数字化迅速发展的时代&#xff0c;园区管理也迎来了全新的机遇和挑战。众所周知&#xff0c;开源智慧园区管理系统作为一种创新解决方案&#xff0c;正逐步打破传统管理的局限性。它的开放性不仅使得系统可以根据具体需求进行灵活调整&#xff0c;也为用户提供…

【2025年数学建模美赛F题】(顶刊论文绘图)模型代码+论文

全球网络犯罪与网络安全政策的多维度分析及效能评估 摘要1 Introduction1.1 Problem Background1.2Restatement of the Problem1.3 Literature Review1.4 Our Work 2 Assumptions and Justifications数据完整性与可靠性假设&#xff1a;法律政策独立性假设&#xff1a;人口统计…

Java - WebSocket

一、WebSocket 1.1、WebSocket概念 WebSocket是一种协议&#xff0c;用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过一个单一的TCP连接提供了持久化连接&#xff0c;这使得Web应用程序可以更加实时地传递数据。WebSocket协议最初由W3C开发&#xff0c;并于2…

python flask 使用 redis写一个例子

下面是一个使用Flask和Redis的简单例子&#xff1a; from flask import Flask from redis import Redisapp Flask(__name__) redis Redis(hostlocalhost, port6379)app.route(/) def hello():# 写入到Redisredis.set(name, Flask Redis Example)# 从Redis中读取数据name re…

C链表的一些基础知识

一、链表的基本概念 链表是一种常见的线性数据结构&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据部分和指向下一个节点的指针&#xff08;单链表情况&#xff09;。通过指针将各个节点连接起来&#xff0c;与数组不同&#xff0c;链表在内存中的存储不是连续的…

2024年记 | 凛冬将至

放弃幻想&#xff0c;准备斗争&#xff01; 考研or就业&#xff1f; 上大学以来&#xff0c;考研上名校在我的心里一直是一颗种子&#xff0c;2024年初&#xff0c;当时的想法是考研和就业两手抓。买了张宇的高数现代&#xff0c;想要死磕&#xff01; 也记了挺多笔记... 如果…

Windows基础

一. Windows防火墙与Defender 介绍&#xff1a;Windows防火墙与Defender是Windows操作系统中两大重要的安全组件&#xff0c;它们共同工作以保护计算机免受各种网络威胁和病毒攻击。 Windows防火墙&#xff1a;Windows防火墙是一种软件防火墙&#xff0c;旨在监控和控制进出计…