Post 方法接受类型
若使用method(Type Parameter1, Type p2 );
则会获取 Request 中 Query String Parameter数据(Form表单),若需要获取Data内容应该创建model 并 method(modelClass model),则会json 反序列化Request Payload 成对象(这个转换在[Apicontroller]特性中完成)。
若使用method(Type Parameter1, Type p2 );
则会获取 Request 中 Query String Parameter数据(Form表单),若需要获取Data内容应该创建model 并 method(modelClass model),则会json 反序列化Request Payload 成对象(这个转换在[Apicontroller]特性中完成)。
注册服务:
builder.Services.AddCors(options =>
{
options.AddPolicy
(
name:"Cors",
builder =>
{
builder.WithOrigins("*", "*", "*")
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
}
);
});
启用服务:
app.UseCors("Cors");
builder.Services.AddCors(c=>c.AddPolicy("any",p=>p.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin()));
app.UseCors();
controller添加特性[EnableCors("any")]
举例:
API | 描述 |
---|---|
GET /api/items | 获取所有item |
GET /api/item/{id} | 获取制定项 |
POST /api/items | 添加新项 |
PUT /api/items/{id} | 更新现有项 |
DELETE /api/items/{id} | 删除现有项 |
不常用: | |
PATCH /api/items/{id} | 更新现有项部分内容 |
Controller上添加特性 [Route("/api/[controller]")],自动对应其到方法。
若有多于一个方法,则需要在方法上添加 Route 特性覆盖类特效独立映射,或者在路由中添加'[action]'映射到方法名,也可以在Http方法特性上独立独立映射,如[HttpGet('121')]映射到'类path/Get/123',必须所有public方法都有路由。
Route可以{}传参,若方法有参数,则会要求参数,若{}中有参数,则必填(参数名需相同,若不同则仅方法参数能拿到),由此可实现伪静态,。
所有公开Action必须有路由,否则编译报错。(由ApiController实现)
ApiCOntroller实现:
Controller下:
若方法为
public IActionResult method(){
return View();
}
则会生成并返回 对应的View视图;
MVC 与 WebApi的区别:
mvc:
controller是实现Controller(继承自ContollerBase);
有添加ControllerWithViews 服务;
有Route;
能够使用Razor引擎(Cshtml)
WebApi:
Controller 继承 ControllerBase;
只能使用普通web调用接口(ajax,axios,fetch);
有swagger;