Web API学习笔记(四)——添加一个控制器类(Controller class)

添加一个控制器类(controller class)的注意事项:
1.在Web API中控制器类要有 "controller"后缀
2.这个类必须继承ControllerBsse
3.在这个控制器上使用ApiController属性
4.使用Routing属性

ContrllerBsse?
ContrllerBsse 类中we提供了很多方法和属性去处理HTTP请求

ApiController作用
1.对路由(routing)属性要求
2.处理客户端错误,即400 status code
3.多部分(Multipart)/表单数据(form-data)请求推断
4.使用更多属性将传入的数据与参数绑定

第一步、选中Controllers文件右键—>添加—>新建基架
在这里插入图片描述
第二步、选择API控制器—>下一步
在这里插入图片描述
第三步、输入名称—>完成
在这里插入图片描述
打开脚本添加 Get() 方法如下所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace MyWebApi.Controllers
{
    
    
    [Route("api/[controller]")]
    [ApiController]
    public class TestController : ControllerBase
    {
    
    
        public string Get()
        {
    
    
            return "Hello TestController";
        }
    }
}

运行结果
在这里插入图片描述
它会默认执行Get方法

如果再添加一个Get1方法,如下代码所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace MyWebApi.Controllers
{
    
    
    [Route("api/[controller]")]
    [ApiController]
    public class TestController : ControllerBase
    {
    
    
        public string Get()
        {
    
    
            return "Hello TestController Get";
        }

        public string Get1()
        {
    
    
            return "Hello TestController Get1";
        }
    }
}

然后运行,结果如下:
在这里插入图片描述
HTTP 500错误,全称为HTTP 500 Internal Server Error,即HTTP 500内部服务器错误

然后在Startup.cs脚本中Configure方法中加入开发者异常页面显示的代码如下:

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
    
    
            if (env.IsDevelopment())
            {
    
    
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

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

然后运行,结果如下:
在这里插入图片描述
也就是说这个请求匹配了多个端点(endpoint),他分不清请求的这个端,是Get方法还是Get1方法,每个端只能对应一个方法。

然后我们在修改一下TestController.cs脚本,如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace MyWebApi.Controllers
{
    
    
    [Route("api/[controller]")]
    [ApiController]
    public class TestController : ControllerBase
    {
    
    
        
        public string Get()
        {
    
    
            return "Hello TestController Get";
        }

        [Route("1")]
        public string Get1()
        {
    
    
            return "Hello TestController Get1";
        }
    }
}

运行结果就正常了:
Get:
在这里插入图片描述
Get1:
在这里插入图片描述
还可以直接使用方法名称来获取端点,请求Http。
然后对TestController.cs脚本,如下:

扫描二维码关注公众号,回复: 15177792 查看本文章
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace MyWebApi.Controllers
{
    
    
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class TestController : ControllerBase
    {
    
    
        
        public string Get()
        {
    
    
            return "Hello TestController Get";
        }

        public string Get1()
        {
    
    
            return "Hello TestController Get1";
        }
    }
}

运行结果,如下:
Get:
在这里插入图片描述
Get1:
在这里插入图片描述
注意: 这里的请求路径Get/Get1也可以是小写的

下一节:Web API学习笔记(五)——中间件(Middleware)和HTTP请求管线(Http Request Pipeline)

猜你喜欢

转载自blog.csdn.net/weixin_45724919/article/details/126663852
今日推荐