.NET API 中的 FromRoute、FromQuery、FromBody 用法
原文链接: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 用法的更多相关文章
- 浅析Web API中FromBody属性
比较如下两段代码及测试结果: public class ValuesController : ApiController { // POST api/<controller> public ...
- 熬夜讲解vue3组合API中setup、 ref、reactive的用法
1.初识setUp的使用 简单介绍下面的代码功能: 使用ref函数,去使用监听某一个变量的变化,并且把它渲染到视图上. setUp函数是组合API的入口函数.这个是非常重要的. setUp可以去监听变 ...
- .NET Core WEB API中接口参数的模型绑定的理解
在.NET Core WEB API中参数的模型绑定方式有以下表格中的几种: 微软官方文档说明地址:https://docs.microsoft.com/zh-cn/aspnet/core/web-a ...
- 如何在ASP.NET Core Web API中使用Mini Profiler
原文如何在ASP.NET Core Web API中使用Mini Profiler 由Anuraj发表于2019年11月25日星期一阅读时间:1分钟 ASPNETCoreMiniProfiler 这篇 ...
- 标准C++中的string类的用法总结
标准C++中的string类的用法总结 相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有 ...
- jQuery 3.1 API中文文档
jQuery 3.1 API中文文档 一.核心 1.1 核心函数 jQuery([selector,[context]]) 接收一个包含 CSS 选择器的字符串,然后用这个字符串去匹配一组元素. jQ ...
- Web Api中的get传值和post传值
GET 方式 get方式传参 我们一般用于获取数据做条件筛选,也就是 “查” 1.无参 var look = function () { $.ajax({ type: "GET", ...
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【五】——在Web Api中实现Http方法(Put,Post,Delete)
系列导航地址http://www.cnblogs.com/fzrain/p/3490137.html 前言 在Web Api中,我们对资源的CRUD操作都是通过相应的Http方法来实现——Post(新 ...
- jQuery EasyUI API 中文文档 - ComboGrid 组合表格
jQuery EasyUI API 中文文档 - ComboGrid 组合表格,需要的朋友可以参考下. 扩展自 $.fn.combo.defaults 和 $.fn.datagrid.defaults ...
- jQuery EasyUI API 中文文档 - ValidateBox验证框
jQuery EasyUI API 中文文档 - ValidateBox验证框,使用jQuery EasyUI的朋友可以参考下. 用 $.fn.validatebox.defaults 重写了 d ...
随机推荐
- Django-4:运行runserver
Djnago运行.启动 命令:python manage.py runserver 端口号 例如:当前有个项目为ClosedLoop,如果要启动它就进入项目环境,或者直接在PyCharm的终端中运行命 ...
- ImageMagick 图像处理学习笔记
Use ImageMagick to create, edit, compose, or convert bitmap images. It can read and write images in ...
- 一分钟学一个 Linux 命令 - mv 和 cp
前言 大家好,我是god23bin.欢迎来到<一分钟学一个 Linux 命令>系列,今天需要你花两分钟时间来学习下,因为今天要讲的是两个命令,mv 和 cp 命令. mv 什么是 mv 命 ...
- Spring Boot实现高质量的CRUD-3
(续前文) 7.Service接口类 Service类提供业务的实现逻辑,其调用Dao类的方法进行数据存取,并为Controller类提供方法.类似于Dao的接口类,服务层使用接口类,便于代码 ...
- 软件测试从小白进阶高手-Python自动化+Jmeter性能+App项目+接口测试
软件测试从小白进阶高手-Python自动化+Jmeter性能+App项目+接口测试 软件测试技能,包括Python自动化.Jmeter性能测试.App项目测试.接口测试.接下来,我将从每个技能点给出一 ...
- 现代C++学习指南-标准库
在[上一章](https://www.yuque.com/docs/share/adb5b1e4-f3c6-46fd-ba4b-4dabce9b4f2a?# <现代C++学习指南-类型系统> ...
- CF1034D Intervals of Intervals
简要题意 给定 \(n\) 个区间组成的序列,定义它的一个连续段的价值为这个段内所有区间的并覆盖的长度.求价值前 \(k\) 大的段的价值和. 数据范围:\(1\le n\le 3\times 10^ ...
- 自然语言处理 Paddle NLP - 情感分析技术及应用SKEP-实践
Part A. 情感分析任务 众所周知,人类自然语言中包含了丰富的情感色彩:表达人的情绪(如悲伤.快乐).表达人的心情(如倦怠.忧郁).表达人的喜好(如喜欢.讨厌).表达人的个性特征和表达人的立场等等 ...
- 在linux上启动arthas报“Can not find java process”
发生背景 完整报错信息: [***@localhost ~]$ java -jar arthas-boot.jar [INFO] JAVA_HOME: /usr/lib/jvm/java-1.8.0- ...
- 每日一题 力扣 1377 https://leetcode.cn/problems/frog-position-after-t-seconds/
力扣 1377 https://leetcode.cn/problems/frog-position-after-t-seconds/ 这道题目用dp去做,构建邻接矩阵,做的时候需要注意题目条件,如果 ...