AspNetCore WebApi项目创建

一、WebApi简介

ASP.NET Web API是一个框架,可以轻松构建HTTP服务,覆盖广泛的客户端,包括浏览器和移动设备。 ASP.NET Web API是在.NET Framework上构建RESTful应用程序的理想平台。其中,RESTful属于一种设计风格,REST中的GET,POST,PUT DELETE来进行数据的增删改查,如果开发人员的应用程序符合RESTful原则,则它的服务称为"RESTful风格应用服务"。

二、创建WebApi项目

1.打开VS,新建项目,选择ASP.NET Web 应用程序(.NET Framework),框架选择.NET Framework4.5,如下图所示。

2.选择空项目,勾选Web API选项,去掉https支持,如下图所示

3.Controllers文件夹下新建一个控制器“IndexController”

4.Model文件夹下新建一个Person实体类

publicclass Person

{

publicint Id { get; set; }

publicstring Name { get; set; }

publicstring Sex { get; set; }

publicint Age { get; set; }

}

5.在App_Start文件夹下的WebApiConfig定义了我们的路由规则

6.在我们的控制器里写一个Get请求方法,

Person[] person = new Person[]

{

new Person { Id = 1, Name = "张三", Sex = "男", Age = 18 },

new Person { Id = 1, Name = "李四", Sex = "女", Age = 18 },

new Person { Id = 1, Name = "王二", Sex = "男", Age = 22 },

new Person { Id = 1, Name = "麻子", Sex = "男", Age = 23 },

};

[HttpGet]

public IHttpActionResult index()

{

return Ok(person);

}

7.运行项目浏览器地址后面加上/api/index效果如下:

8.如果我们再写一个get请求,运行后再次输入http://localhost:xxx/api/index。

会发现,浏览器报错了,那是因为程序不知道你请求的是哪个方法。

WebAPI可以通过[Route]和[RoutePrefix]来自定义路由,[RoutePrefix]作用于Controller,[Route]作用于Action。我们在控制加上[RoutePrefix]和[Route],修改index2方法的返回为NotFound()。

运行并浏览器输入http://localhost:xxx/api/index/index1和index2,会发现index1有数据,index2找不到网页。

9.一般在前后端分离的项目中,后端返回的事json格式的数据,但是我们浏览器中显示的是xml格式的,这里需要修改“WebApiConfig”,添加以下代码,让它默认显示JSON的数据

var formatters = config.Formatters.Where(formatter =>

formatter.SupportedMediaTypes.Where(media =>

media.MediaType.ToString() == "application/xml" || media.MediaType.ToString() == "text/html").Count() > 0) //找到请求头信息中的介质类型 .ToList();

foreach (var match in formatters)

{

config.Formatters.Remove(match); //移除请求头信息中的XML格式

}

打开浏览器请求index1,发现返回的数据已经是json格式的了

当然,我们也可以直接指定返回JSON格式的数据,只需要将returen OK(person)改为returen Json(person),效果是一样的,关于webapi的返回值,可以参考这篇博客https://www.cnblogs.com/refuge/p/8371415.html

三、参数检查验证

在进行请求接口时,需要先对提交的数据参数做一些验证,验证数据的合法性,如果不合法就不再通过action,直接返回给客户端处理。这里我们使用使用FluentValidation做参数验证

1.Nuget安装FluentValidation.WebApi

2.修改Pserson类

[Validator(typeof(PersonValidator))]

publicclass Person

{

publicint Id { get; set; }

publicstring Name { get; set; }

publicstring Sex { get; set; }

publicint Age { get; set; }

}

publicclass PersonValidator : AbstractValidator<Person>

{

public PersonValidator()

{

RuleFor(m => m.Id).NotEmpty().NotNull().WithMessage("Id不能为空");

RuleFor(m => m.Name).NotEmpty().NotNull().WithMessage("Name不能为空");

}

}

3.让 FluentValidation 生效,在 WebApiConfig中添加如下配置

publicstaticclass WebApiConfig

{

publicstaticvoid Register(HttpConfiguration config)

{

...

FluentValidationModelValidatorProvider.Configure(config);

}

}

4.新建Filter文件夹并添加ParamsFilterAttribute类

publicclass ParamsFilterAttribute : ActionFilterAttribute

{

publicoverridevoid OnActionExecuting(HttpActionContext actionContext)

{

//如果参数非法if ( !actionContext.ModelState.IsValid)

{

actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, actionContext.ModelState);

}

//如果没有输入参数elseif (actionContext.ActionArguments.Values.First() == null)

{

actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest,"请输入参数!");

}

}

}

5.控制器新建一个post请求

[HttpPost]

[ParamsFilter]

[Route("params")]

public IHttpActionResult Params([FromBody] Person person)

{

return Json(person);

}

postman模拟post请求,在body什么都不输入,提示请输入参数:

输入id,不输入name,提示name不能为空:

输入正确的参数,返回了数据:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 .NET Core 编写一个 Web API 项目,你可以按照以下步骤进行操作: 1. 安装 .NET Core SDK:首先,保你已经安装了最新的 .NET Core SDK。你可以从 Microsoft方网站(https://dotnet.microsoft.com/download)下载并安装适合你操作系统的版本。 2. 创建 Web API 项目:打开命令行终端或者使用集成开发环境(IDE)如 Visual Studio Code,在你想要创建项目的目录下执行以下命令: ``` dotnet new webapi -n YourProjectName ``` 这将在当前目录下创建一个名为 YourProjectName 的新 Web API 项目。 3. 进入项目目录:执行以下命令进入项目目录: ``` cd YourProjectName ``` 4. 编写 API 控制器:在 Controllers 文件夹中创建一个新的控制器文件(例如 `ValuesController.cs`),并按照需要实现你的 API 逻辑。例如,你可以创建一个简单的 GET 请求处理方法: ```csharp using Microsoft.AspNetCore.Mvc; namespace YourProjectName.Controllers { [ApiController] [Route("api/[controller]")] public class ValuesController : ControllerBase { [HttpGet] public ActionResult<string> Get() { return "Hello, World!"; } } } ``` 5. 运行项目:返回项目根目录,并执行以下命令来运行项目: ``` dotnet run ``` 这将启动一个本地开发服务器,并监听默认的端口号(通常是 5000)。 6. 测试你的 API:打开浏览器或使用工具如 Postman,访问 `http://localhost:5000/api/values`(如果你修改了默认的端口号,请相应地更改 URL),你将会看到返回的 "Hello, World!"。 这只是一个简单的示例,你可以根据你的需求添加更多的控制器和路由。你也可以使用 Entity Framework Core 或其他库来访问数据库,实现更复杂的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值