dotnet初探:用miniapi创建一个自己的url
致谢
首先写在前面,非常感谢微软mvp桂素伟先生的技术分享,因为微软的文档大部分都如机器翻译般的生硬,让人难以读下去,正是他的无私分享为我的.net学习旅程提供了方向,非常感谢。如果大家对他比较感兴趣,可以直接关注微信公众号(桂迹)
创建url需要知道的必要知识
根据Http协议的规定,一般客户端/浏览器发送的请求大概分成四类:创建、删除、更新、读取,也就是post、get、put、delete四个方法,也有计算机网络学的不错的小伙伴会说:你为什么不说patch?其实这个和put的功能差不多,我为了简单就不说了。
创建一个自己的url
要创建一个url,我们可以直接使用Mapxxx方法,比如 MapPost() ,也可以用注解 [Route("url")] ,我为了简单,直接使用Mapxxx。
创建一个最简单url
MapGet('/hello',()=>"hello");
这里创建了一个网址/hello形式的url,它执行第二个参数里的匿名函数,如果访问这个url,浏览器会显示 hello 。
创建一个带参数的url
如果你写过表单,或者上百度时看到网址里面有一个?后跟着xxx=xxx这样的关键词,或许不明白是什么。其实很简单,就是一个参数,比如你填写的一个问卷就是这样的。
有时候我们也需要一个这样的参数,以便让api可以得到一个参数来进行操作,那要怎么实现呢?微软官方文档是直接用了一个直接传递值的方法,就像这样:
MapGet('/hello/{id}',(UUID id)=>"hello");
这样固然可以传递参数,但是缺点是比较混乱,我们难以操作。这时,可以使用 key=val 的方法来传递参数,微软也提供了相应的方法,我们只需要引用 Microsoft.AspNetCore.Mvc 命名空间即可。然后就可以使用FormContext类的注解了。
由于我们只需要传参,所以我使用了FormQuery注解,代码如下:
MapGet('/hello/{id}',([FormQuery(Name="id")] id)=>"hello");
还可以使用 FormHeader 从HTTP头传递参数:
MapGet('/hello/{id}',([FormHeader] id)=>"hello");
从body传递同理:
MapGet('/hello/{id}',([FormBod] id)=>"hello");
dotnet初探:用miniapi创建一个自己的url的更多相关文章
- 获取一个请求的URL内容
using System.Net; 1. // 创建一个请求的URL. WebRequest request = WebRequest.Create("http://www ...
- 【MavenWeb】初探:创建一个Maven Web项目
第一步:创建一个Simple的Maven项目 直接点下一步,把name上面的几个部分填写好,直接Finish即可. 就可以看到如下的结构: 注意点1:如果按照网上的其他一些做法来创建,你会发现少了sr ...
- 【原创】使用.NET Core 1.0创建一个Self-Contained控制台应用
开发机器:win7-x64 .NET Core版本:1.0.0-preview2-003121 Visual Studio Code:1.2.1 至于什么是Self-Contained应用类型以及与P ...
- [翻译] 使用 .NET Core 3.0 创建一个 Windows 服务
原文: .NET Core Workers as Windows Services 在 .NET Core 3.0 中,我们引入了一种名为 Worker Service 的新型应用程序模板.此模板旨在 ...
- 如何创建一个标准的Windows服务
出处:http://www.cnblogs.com/wuhuacong/archive/2009/02/11/1381428.html 如何创建一个标准的Windows服务 在很多时候,我们需要一个定 ...
- 如何创建一个基于 .NET Core 3 的 WPF 项目
在 Connect(); 2018 大会上,微软发布了 .NET Core 3 Preview,以及基于 .NET Core 3 的 WPF:同时还发布了 Visual Studio 2019 预览版 ...
- 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包
MSBuild 的 Task 为我们扩展项目的编译过程提供了强大的扩展性,它使得我们可以用 C# 语言编写扩展:利用这种扩展性,我们可以为我们的项目定制一部分的编译细节.NuGet 为我们提供了一种自 ...
- 如何创建一个基于命令行工具的跨平台的 NuGet 工具包
命令行可是跨进程通信的一种非常方便的手段呢,只需启动一个进程传入一些参数即可完成一些很复杂的任务.NuGet 为我们提供了一种自动导入 .props 和 .targets 的方法,同时还是一个 .NE ...
- ASP.NET Core模块化前后端分离快速开发框架介绍之2、快速创建一个业务模块
源码地址 GitHub:https://github.com/iamoldli/NetModular 演示地址 地址:https://nm.iamoldli.com 账户:admin 密码:admin ...
- .NET Core 1.0 CentOS7 尝试(三、使用VSCode创建一个Web应用)
参考地址:https://docs.asp.net/en/latest/tutorials/your-first-mac-aspnet.html 一.使用VSCode创建一个目录FirstWebApp ...
随机推荐
- TiSpark 初级应用
目前正在使用tispark 进行离线计算,简单记录一下操作过程 一.技术验证 场景:计算每次充电过程中单体最高电压的变化速率 解决方案: 使用tispark 直接访问tidb的数据,采用sp ...
- 将后端的application/json的格式数据类型转换成前端需要的类型格式
前提:后端返回的数据内容 但是红框的数据对于前端来说是不正确的数据 所以我感觉前端处理这个数据本身这个操作都很傻X 但是我尝试进行转换代码如下: 得到的数据: 点击查看代码 const interfa ...
- Leecode 88.合并两个有序数组
想法: 1:先把nums2中的所有元素都放到nums1,之后给合并后的数组排序 1 官方代码: 2 class Solution { 3 public void merge(int[] nums1 ...
- mfc edit只允许输入数字
1.给EDIT控件添加 EN_CHANGE 事件 2.事件中的代码如下: 1 CString strEditVidoe; 2 GetDlgItem( iId )->GetWindowText( ...
- Bootstarp5笔记
我这次来更新Bootstarp5的相关知识啦! 一.安装教程 1.在官网下载相应版本 官网地址:getbootstrap.com 我下载的是Bootstarp5版本 2.点击下载之后,会得到一个压缩文 ...
- 【打怪升级】【rocketMq】rocket的持久化
rocket持久化保证的思想有两点:1是刷盘保证大部分数据不丢失:2是持久化文件的处理,零拷贝技术和内存页,NIO模型保证处理能力 文件持久化目录 ├──abort:rocket broker启动检查 ...
- SpringCloud微服务实战——搭建企业级开发框架(五十一):微服务安全加固—自定义Gateway拦截器实现防止SQL注入/XSS攻击
SQL注入是常见的系统安全问题之一,用户通过特定方式向系统发送SQL脚本,可直接自定义操作系统数据库,如果系统没有对SQL注入进行拦截,那么用户甚至可以直接对数据库进行增删改查等操作. XSS ...
- ARP协议:网络世界的临门一脚
大家好,我是风筝. 各位同学肯定见过关于网络的面试题,什么TCP协议和UDP的区别啦,IP协议工作在哪层啊等等,这都是网络中定义的各种协议.这些标准化的协议就是网络分层模型标准化的核心部分.要想搞懂网 ...
- Net DB Web多级缓存的实现
1.客户端缓存(浏览器缓存) HTTP有一套控制缓存的协议-RFC7234,其中最重要的就是cache-control这个相应报文头,服务器返回时,如果Response带上 cache-control ...
- GO实现Redis:GO实现Redis的AOF持久化(4)
将用户发来的指令以RESP协议的形式存储在本地的AOF文件,重启Redis后执行此文件恢复数据 https://github.com/csgopher/go-redis 本文涉及以下文件: redis ...