致谢

首先写在前面,非常感谢微软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. X射线随笔

    2023-02-27 千里马与伯乐 如果把X射线(X光)比做千里马的话,那这匹千里马的发掘,离不开伯乐的贡献.说起X射线的伯乐,就得从一个简短的故事说起: 1895年11月8日的夜晚,德国物理学家伦琴 ...

  2. Kicad使用技巧--原理图复用

    平时主要使用AD.kicad和立创eda,最近在琢磨一下各个软件的使用技巧,提升一下画图效率,首先想到的就是原理图复用,我想象中的原理图复用应该像AutoCAD的图块功能一样. 这次先说kicad,摸 ...

  3. Using Semaphores in Delphi, Part 2: The Connection Pool

    Abstract: Semaphores are used to coordinate multiple threads and processes. That semaphores provide ...

  4. Stream流相关方法

    LIST<对象> 转换MAP 并根据某个字段分组 // 并根据某个字段分组,并做了归类 Map<String, List<User>> collect = user ...

  5. bigNumber.js的简单使用

    sum 计算传入的参数和,参数类型可以是 String,Number // 两数之和 var x = BigNumber.sum('11', 23) x.toNumber() // 34 // 多个参 ...

  6. 基于Extjs web设计器

    通过从左边的树拖入字段到右边,编辑字段属性,在界面所见即所得 进入链接 http://www.e-ipd.com:8080/crk/public/login.aspx?ReturnUrl=%2fcrk ...

  7. 微信小程序 真机调试白屏

    真机调试白屏,报define is not defined 解决:   更新小程序版本

  8. vue打包记录

    这里的确是css以及js文件的路径问题,但解决时并不需要手动改路径或者加一段判断去修改,最方便的办法时在项目打包前的vue.config.js里面将publicPath属性添加或者修改为 public ...

  9. Oracle 取Group By 第一条

    select *from (select emp.*,row_number() over(partition by deptno order by rownum) cn from emp)where ...

  10. uni-app使用Sqlite

    step2:封装常用操作(未对事务进行封装 HTML5+ API Reference (html5plus.org)) // //打开数据库 function openDb(name,path) { ...