致谢

首先写在前面,非常感谢微软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的更多相关文章

  1. 获取一个请求的URL内容

    using System.Net; 1. // 创建一个请求的URL.          WebRequest request = WebRequest.Create("http://www ...

  2. 【MavenWeb】初探:创建一个Maven Web项目

    第一步:创建一个Simple的Maven项目 直接点下一步,把name上面的几个部分填写好,直接Finish即可. 就可以看到如下的结构: 注意点1:如果按照网上的其他一些做法来创建,你会发现少了sr ...

  3. 【原创】使用.NET Core 1.0创建一个Self-Contained控制台应用

    开发机器:win7-x64 .NET Core版本:1.0.0-preview2-003121 Visual Studio Code:1.2.1 至于什么是Self-Contained应用类型以及与P ...

  4. [翻译] 使用 .NET Core 3.0 创建一个 Windows 服务

    原文: .NET Core Workers as Windows Services 在 .NET Core 3.0 中,我们引入了一种名为 Worker Service 的新型应用程序模板.此模板旨在 ...

  5. 如何创建一个标准的Windows服务

    出处:http://www.cnblogs.com/wuhuacong/archive/2009/02/11/1381428.html 如何创建一个标准的Windows服务 在很多时候,我们需要一个定 ...

  6. 如何创建一个基于 .NET Core 3 的 WPF 项目

    在 Connect(); 2018 大会上,微软发布了 .NET Core 3 Preview,以及基于 .NET Core 3 的 WPF:同时还发布了 Visual Studio 2019 预览版 ...

  7. 如何创建一个基于 MSBuild Task 的跨平台的 NuGet 工具包

    MSBuild 的 Task 为我们扩展项目的编译过程提供了强大的扩展性,它使得我们可以用 C# 语言编写扩展:利用这种扩展性,我们可以为我们的项目定制一部分的编译细节.NuGet 为我们提供了一种自 ...

  8. 如何创建一个基于命令行工具的跨平台的 NuGet 工具包

    命令行可是跨进程通信的一种非常方便的手段呢,只需启动一个进程传入一些参数即可完成一些很复杂的任务.NuGet 为我们提供了一种自动导入 .props 和 .targets 的方法,同时还是一个 .NE ...

  9. ASP.NET Core模块化前后端分离快速开发框架介绍之2、快速创建一个业务模块

    源码地址 GitHub:https://github.com/iamoldli/NetModular 演示地址 地址:https://nm.iamoldli.com 账户:admin 密码:admin ...

  10. .NET Core 1.0 CentOS7 尝试(三、使用VSCode创建一个Web应用)

    参考地址:https://docs.asp.net/en/latest/tutorials/your-first-mac-aspnet.html 一.使用VSCode创建一个目录FirstWebApp ...

随机推荐

  1. axios实现无感刷新

    前言 最近在做需求的时候,涉及到登录token,产品提出一个问题:能不能让token过期时间长一点,我频繁的要去登录. 前端:后端,你能不能把token 过期时间设置的长一点. 后端:可以,但是那样做 ...

  2. vue中的普通函数与箭头函数以及this关键字

    普通函数 普通函数指的是用function定义的函数 var hello = function () { console.log("Hello, Fundebug!"); } 箭头 ...

  3. IE浏览器下bootStrap form-control input输入框不显示兼容性问题

    问题背景 采用了如下代码. 主要时bootstrap 搜索框. 再IE11下表现出 input 明明 value有值,但是显示不出来的问题. 排查发现form-control样式去后功能正常,但是样式 ...

  4. HOOK大法

    // 请求头hook 测试网站同花顺 OK var header_old = window.XMLHttpRequest.prototype.setRequestHeader;window.XMLHt ...

  5. JavaScript 包装类

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. 01-什么是ElasticSearch

    1.什么是搜索? 百度:我们想要查找想要的一些信息比如在百度搜索一本书,一部电影这就是最常见的搜索 但是百度!=搜索 垂直搜索(站内搜索) 互联网的搜索:电商网站,新闻网站,招聘网站,等等 IT系统的 ...

  7. js屏蔽开发者工具

    一.屏蔽浏览器右键菜单审查元素 document.oncontextmenu = function () { return false; }; 二.屏蔽F12以及ctrl+shift+i 打开调试工具 ...

  8. WordPress标题分隔符”-“被转义为“&#8211”怎么办?

    按照百度搜索资源平台<百度搜索网页标题规范:让标题回归标题本身>百度官方文档参考,如果WordPress标题里出现不规范"– 2.停止wptexturize转义任何字符 add_ ...

  9. typescript 的动态引入组件

    环境: Arco Pro + Vue3 vite自身对动态字符串形式的组件引入是有限制的, 以下写法会报错 官方文档中也对此有做说明, 只能通过固定形式去引用 以下形式不会报错, 但这种固定格式的局限 ...

  10. C++ sort排序

    sort(begin, end, cmp),其中begin为指向待sort()的数组的第一个元素的指针,end为指向待sort()的数组的最后一个元素的下一个位置的指针,cmp参数为排序准则,如果没有 ...