首页 > 其他分享 >.net core web api 路由约束

.net core web api 路由约束

时间:2022-12-22 09:34:42浏览次数:59  
标签:core 匹配 web 请参阅 约束 length api min 路由

路由约束在传入 URL 发生匹配时执行,URL 路径标记为路由值。 路径约束通常检查通过路径模板关联的路径值,并对该值是否为可接受做出对/错决定。 某些路由约束使用路由值以外的数据来考虑是否可以路由请求。 例如,HttpMethodRouteConstraint 可以根据其 HTTP 谓词接受或拒绝请求。 约束用于路由请求和链接生成。

 警告

请勿将约束用于输入验证。 如果约束用于输入验证,则无效的输入将导致 404(找不到页面)响应。 无效输入可能生成包含相应错误消息的 400 错误请求。 路由约束用于消除类似路由的歧义,而不是验证特定路由的输入。

下表演示示例路由约束及其预期行为:

约束示例匹配项示例说明
int {id:int} 123456789-123456789 匹配任何整数
bool {active:bool} trueFALSE 匹配 true 或 false。 不区分大小写
datetime {dob:datetime} 2016-12-312016-12-31 7:32pm 在固定区域性中匹配有效的 DateTime 值。 请参阅前面的警告。
decimal {price:decimal} 49.99-1,000.01 在固定区域性中匹配有效的 decimal 值。 请参阅前面的警告。
double {weight:double} 1.234-1,001.01e8 在固定区域性中匹配有效的 double 值。 请参阅前面的警告。
float {weight:float} 1.234-1,001.01e8 在固定区域性中匹配有效的 float 值。 请参阅前面的警告。
guid {id:guid} CD2C1638-1638-72D5-1638-DEADBEEF1638 匹配有效的 Guid 值
long {ticks:long} 123456789-123456789 匹配有效的 long 值
minlength(value) {username:minlength(4)} Rick 字符串必须至少为 4 个字符
maxlength(value) {filename:maxlength(8)} MyFile 字符串不得超过 8 个字符
length(length) {filename:length(12)} somefile.txt 字符串必须正好为 12 个字符
length(min,max) {filename:length(8,16)} somefile.txt 字符串必须至少为 8 个字符,且不得超过 16 个字符
min(value) {age:min(18)} 19 整数值必须至少为 18
max(value) {age:max(120)} 91 整数值不得超过 120
range(min,max) {age:range(18,120)} 91 整数值必须至少为 18,且不得超过 120
alpha {name:alpha} Rick 字符串必须由一个或多个字母字符组成,a-z,并区分大小写。
regex(expression) {ssn:regex(^\\d{{3}}-\\d{{2}}-\\d{{4}}$)} 123-45-6789 字符串必须与正则表达式匹配。 请参阅有关定义正则表达式的提示。
required {name:required} Rick 用于强制在 URL 生成过程中存在非参数值

 例:

[Route("users/{id:int:min(1)}")]
public User GetUserById(int id) { }
源:https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/routing?view=aspnetcore-6.0

     

 

标签:core,匹配,web,请参阅,约束,length,api,min,路由
From: https://www.cnblogs.com/yyd-sun/p/16997652.html

相关文章

  • 如何使用 EF Core 7 批量删除数据
    在EFCore7中,我们可以使用批量操作来删除多条数据。这种方式与之前的版本有所不同,本文将对比EFCore7和之前版本批量删除数据的不同方式。删除给定ID的数据在EF......
  • [LeetCode] 1753. Maximum Score From Removing Stones
    Youareplayingasolitairegamewith threepiles ofstonesofsizes a​​​​​​, b,​​​​​​and c​​​​​​respectively.Eachturnyouchoosetw......
  • vue中webpack环境中动态注册插件
    //webpack动态引入文件constrequireComonents=require.context("./",true,/\.vue$/);//Vue提供的install方法进行插件的注册/**install方法第一个参数是vue......
  • WebFlux 详解
    今天我们开始来学习下​​WebFlux​​,为什么突然要学这个东西?因为我之前是想学习​​SpringCloudGateway​​​来着,然后发现它是基于​​Spring5.0+SpringBoot2.0+Web......
  • Web服务器基础 -- Nginx rewrite 案例实战(错误页面重定向、虚拟目录别名重定向、域名
    Nginxrewrite案例实战(错误页面重定向、虚拟目录别名重定向、域名跳转)​​一、Nginx中的正则​​​​二、Nginxrewrite案例实战​​​​1、错误页面重定向​​​​2、虚......
  • ptrade 量化交易接口 API接口文档
    http://ptradeapi.com  更新了多个可转债数据接口比如:ptradeapi #可转债溢价率规模数据 ......
  • Javaweb 登陆与验证码
    本次记录分角色登陆以及验证码的Servlet。1.登陆验证<html><%--CreatedbyIntelliJIDEA.User:jiachenglinDate:2022/11/11Time:14:31Tochangethis......
  • CTFSHOW_菜狗杯_WEB
    web签到<?php/*#-*-coding:utf-8-*-#@Author:h1xa#@Date:2022-11-1017:20:38#@LastModifiedby:h1xa#@LastModifiedtime:2022-11-1109:38:59......
  • 实验八-Web部署
    实验八-Web部署部署过程配置华为云服务器安装程序dnfinstallhttpdmysql-serverphpphp-mysqlndphp-fpm启用Apachesystemctlstarthttpd.servi......
  • Flink:DataStreamAPI
    执行环境获取的执行环境是StreamExecutionEnvironment类的对象。在代码中创建执行环境的方法,就是调用这个类的静态方法。getExecutionEnvironment根据上下文直接得到......