首页 > Web开发 > 详细

Asp.NetCore Web开发之路由

时间:2020-09-19 13:27:03      阅读:52      评论:0      收藏:0      [点我收藏+]

接着讲asp.net core web开发,这节讲路由系统(Route)。

在asp.net core中通过路由来将请求映射到对应的action,主要用到两个中间件,UseRouting()和UseEndpoints() 前者用于设置请求和action的映射关系,后者用于请求没有对应action的情况(一般是设置路由到主页,或者错误页面)

 

 MVC中路由到控制器

 一个新建的mvc模板,最后一个中间件默认是:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

 这是一个传统路由,用于将请求映射到控制器的action,默认是访问home控制器下的index界面,并且支持使用REST风格传入一个可空参数(不是必须的),也就是/{id?}这个项,我们也可以自己定义这个路由规范,改成自己特定的路径。

 

  HTTP谓词模板

   http谓词模板有:

   HttpGet HttpPost HttpPut HttpDelete HttpHead HtttpPatch

   它们也是路由的一种,一般用在web api中,用来限制为某种请求,从字面上也能看出它们的作用,标记为HttpGet路由的action,只能接受GET请求。

 

  Web API 中的路由规范

  在web api中,一般会使用ApiController这个特性标记控制器,它的作用仅返回序列化的数据,不会返回视图,下面看段代码:

app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });

通过VS脚手架生成的web api模板,它的终点路由是映射到控制器,没有做什么默认化,所以需要控制器自己定义路由,在生成的控制器中,默认的路由为:

 [Route("[controller]")]
 public class WeatherForecastController : ControllerBase
 {}

 [controller]会自动转化为控制器名称,这点跟MVC一样,api一般会用到HTTP谓词模板:

[HttpPost(upload/postdata)]
public string Post()
{
    return "error";
}

这样限制了访问的方法必须是Post,而且我们可以自定义url路径,上述代码我将Post()action的访问形式改为最后的路径必须是upload/postdata

总的来说,使用路由,可以避免action名称直接暴露在外面,并且限制请求方法对action的访问,可以增强安全性。

 

这是我的公众号二维码,获取最新文章,请关注此号

技术分享图片

Asp.NetCore Web开发之路由

原文:https://www.cnblogs.com/charlesmvp/p/13695195.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!