原文链接:https://www.cnblogs.com/ysmc/p/17663663.html

  最近技术交流群里,还有不少小伙伴不知道 FromRoute、FromQuery、FromBody 这几个特性是怎么使用的,也不清楚它们之间的区别在哪里,特意写下这个文章,希望可以帮助到迷茫的小伙伴。

在API开发过程中,我们先要确定我们的接口是干嘛的,获取请求数据用 GET,上传使用 POST,修改使用 PATCH,删除是 DELETE,通常使用这4个就足够了。

  接着下一步,就是参数放在哪了,通常:

  (1)GET请求的参数,是以url?xxx=value1&xxx=value 这样的方式进行传参;

  (2)POST、PATCH,则是放在 body里,当然也可以放在form中;

  (3)而所有的请求方式,都是支持通过 url 传参的,包括通过 route 传参;

  好久没写文档了,都不知道怎么写了,还是直接上代码吧;

  我们新建一个API工程,过程我就不演示了;建一个Controller,我这里起名为 MethodsController;还需要建一个接收参数的实体类,当然也可以不使用实体类,个人建议是使用;

实体类

public class Parameter
{
public string? Method { get; set; } public string? Value { get; set; }
}

Url 传参

[HttpGet]
public async Task<Parameter> GetQueryAsync([FromQuery] Parameter query)
{
return await Task.FromResult(query);
}

示例

Route 传参

[HttpGet("{method}/{value}")]
public async Task<Parameter> GetRouteAsync([FromRoute] Parameter route)
{
return await Task.FromResult(route);
}

示例

Body传参

[HttpPost]
public async Task<Parameter> PostAsync([FromBody] Parameter body)
{
return await Task.FromResult(body);
}

示例

混合

[HttpPatch("{method}/{value}")]
public async Task<Dictionary<string, Parameter>> PatchAsync(
[FromRoute] Parameter route,
[FromQuery] Parameter query,
[FromBody] Parameter body)
{
var result = new Dictionary<string, Parameter>()
{
["route"] = route,
["query"] = query,
["body"] = body
}; return await Task.FromResult(result);
}

示例

  写得不好,手生了,大家有什么想了解的欢迎在评论区留言,我也需要多练练手【手动狗头】,什么时候博客园可以加个表情功能啊!

.NET API 中的 FromRoute、FromQuery、FromBody 用法的更多相关文章

  1. 浅析Web API中FromBody属性

    比较如下两段代码及测试结果: public class ValuesController : ApiController { // POST api/<controller> public ...

  2. 熬夜讲解vue3组合API中setup、 ref、reactive的用法

    1.初识setUp的使用 简单介绍下面的代码功能: 使用ref函数,去使用监听某一个变量的变化,并且把它渲染到视图上. setUp函数是组合API的入口函数.这个是非常重要的. setUp可以去监听变 ...

  3. .NET Core WEB API中接口参数的模型绑定的理解

    在.NET Core WEB API中参数的模型绑定方式有以下表格中的几种: 微软官方文档说明地址:https://docs.microsoft.com/zh-cn/aspnet/core/web-a ...

  4. 如何在ASP.NET Core Web API中使用Mini Profiler

    原文如何在ASP.NET Core Web API中使用Mini Profiler 由Anuraj发表于2019年11月25日星期一阅读时间:1分钟 ASPNETCoreMiniProfiler 这篇 ...

  5. 标准C++中的string类的用法总结

    标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...

  6. jQuery 3.1 API中文文档

    jQuery 3.1 API中文文档 一.核心 1.1 核心函数 jQuery([selector,[context]]) 接收一个包含 CSS 选择器的字符串,然后用这个字符串去匹配一组元素. jQ ...

  7. Web Api中的get传值和post传值

    GET 方式 get方式传参 我们一般用于获取数据做条件筛选,也就是 “查” 1.无参 var look = function () { $.ajax({ type: "GET", ...

  8. 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【五】——在Web Api中实现Http方法(Put,Post,Delete)

    系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 在Web Api中,我们对资源的CRUD操作都是通过相应的Http方法来实现——Post(新 ...

  9. jQuery EasyUI API 中文文档 - ComboGrid 组合表格

    jQuery EasyUI API 中文文档 - ComboGrid 组合表格,需要的朋友可以参考下. 扩展自 $.fn.combo.defaults 和 $.fn.datagrid.defaults ...

  10. jQuery EasyUI API 中文文档 - ValidateBox验证框

    jQuery EasyUI API 中文文档 - ValidateBox验证框,使用jQuery EasyUI的朋友可以参考下.   用 $.fn.validatebox.defaults 重写了 d ...

随机推荐

  1. Django admin管理工具的使用、定制及源码解析

    admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLE ...

  2. remote: HTTP Basic:Access denied fatal:Authentication failed for

    近来在一天新电脑上面使用git pull 一个项目,老是提示 Access denied, 找了许多方法,ssh key这些都配置了还是不行,当时别提有多尬 看嘛这就是pull 时的提示 // *** ...

  3. fofa搜索技巧

    转载自:https://www.cnblogs.com/sunny11/p/14388508.html ` 目录 题记 技巧(我一般找国内的,所以下边一直加cn) 1.搜索HTTP响应头中含有&quo ...

  4. 电赛控制类PID算法实现

    一.什么是PID 学过自动控制原理的对PID并不陌生,PID控制是对偏差信号e(t)进行比例.积分和微分运算变换后形成的一种控制规律.PID 算法的一般形式: PID控制系统原理框图 二.PID离散化 ...

  5. IIC通信协议

    1.IIC 通信协议简介 I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的, 由于它引脚少,硬件实现简单,可扩展性强,不需要 USART.CAN 等 ...

  6. 如何更快的烹饪出美味的MOJO系列教程🔥之初识MOJO

    MOJO基础入门<概述> 一,什么叫TMD的MOJO Mojo是一种编程语言,它与Python一样易于使用,但具有C++和Rust的性能.此外,Mojo提供了利用整个Python库生态系统 ...

  7. Galaxy 生信平台(二):生产环境部署

    在 上一篇文章中,我们介绍了适合单个用户进行使用和开发的 Galaxy 在线平台,今天我们来聊一下在为多用户生产环境设置 Galaxy 时,我们应采取的一些可以让 Galaxy 获得最佳性能的额外步骤 ...

  8. Kafka的系统架构和API开发

    系统架构 主题topic和分区partition topic Kafka中存储数据的逻辑分类:你可以理解为数据库中"表"的概念:比如,将app端日志.微信小程序端日志.业务库订单表 ...

  9. Day01_Java作业

    A:选择题 1:下列标识符哪个是合法的(a) A.class B.$abc C.1234 D.Car.taxi B:填空题 1: java源程序的扩展名是( .java ) 2: java程序经编译后 ...

  10. 【转载】老男孩读PCIe

    目录 老男孩读PCIe之一:从PCIe速度说起 老男孩读PCIe之二:PCIe拓扑结构 老男孩读PCIe之三:PCIe分层结构 老男孩读PCIe之四:TLP类型 老男孩读PCIe之五:TLP结构 老男 ...