0
点赞
收藏
分享

微信扫一扫

asp.net.core webapi接收参数

海牙秋天 2022-12-08 阅读 72

 

数据请求的来源

1.url

[FromQuery] 来自于url

2.from表单

[FromForm]来自于表单数据

3.app/json

[FromBody] 来自于 json

4.restful风格

 

 

 

 

 

Get方法

1.无参数

​​ https://localhost:5001/test/g1​​

[ApiController]
[Route("[controller]/[action]")]
public class TestController : ControllerBase
{
[HttpGet]
public string g1()
{
return "abc";
}
}

2.两个参数

​​https://localhost:5001/test/g2?a=3&str=abc​​

[HttpGet]
public string g2(int a,string str)
{
return a.ToString()+str;
}

 

 

3. 参数是一个对象   

[FromQuery]特性

[HttpGet]
public string g3([FromQuery]Student student)
{
return student.name;
}

asp.net.core webapi接收参数_List

不常见get里带body

[HttpGet]
public string g3(Student student)
{
return student.name;
}

对象

public class Student
{
public int age { get; set; }
public string name { get; set; }
}

body的 raw

{"age":18,"name":"tom"}

asp.net.core webapi接收参数_bc_02

 

5.参数是集合

[HttpGet]
public string g4(List<Student> list)
{
string str = "";
foreach (var stu in list)
{
str += stu.name;
}
return str;
}

[{"age":18,"name":"tom"},{"age":22,"name":"liu"}]

asp.net.core webapi接收参数_List_03

 

Post

action默认就是post请求,可以不加[HttpPost]

1. 无参数

 

asp.net.core webapi接收参数_表单_04

[HttpPost]
public string p1()
{
return "abc";
}

2.一个参数 

[HttpPost]
public string p2([FromBody]string str)
{
return str;
}

asp.net.core webapi接收参数_List_05

 

3.传对象

[HttpPost]
public string p3([FromBody] Student student)
{
return student.name;
}

public class Student
{
public int Age { get; set; }
public string name { get; set; }
}

asp.net.core webapi接收参数_表单_06

  

4.数组

["ab","cd"]

[HttpPost]
public string p4(string[] arr)
{
string str = "";
foreach (var a in arr)
{
str += a;
}
return str;
}

asp.net.core webapi接收参数_bc_07

 

 

5.传集合对象

[{"age":18,"name":"tom"},{"age":22,"name":"liu"}]

[HttpPost]
public string p5(List<Student> list)
{
string str = "";
foreach (var stu in list)
{
str += stu.name;
}
return str;
}

 

asp.net.core webapi接收参数_表单_08

 

 

6.传对象和参数混合

参数放到url里,

[HttpPost]
public string p6(List<Student> list,string a,string b)
{
string str = "";
foreach (var stu in list)
{
str += stu.name;
}
return str+a+b;
}

asp.net.core webapi接收参数_List_09

 

 同时

asp.net.core webapi接收参数_bc_10

 

 

7.dynamic

{"age":18,"name":"tom"}

public string p7(dynamic obj)
{
var str = Convert.ToString(obj);
Student student = JsonConvert.DeserializeObject<Student>(str);
return student.name;
}

[{"age":18,"name":"tom"},{"age":22,"name":"liu"}]

public string p7(dynamic obj)
{
var str = Convert.ToString(obj);
List<Student> studentList = JsonConvert.DeserializeObject<List<Student>>(str);
string res = "";
foreach (var student in studentList)
{
res += student.name;
}
return res;
}

 

8.JObject

 

9.传表单

 JDynamic

 

 

获取Head的值

方法参数前添加 [FromHeader]

Name=  固定

[HttpGet]
public string test(int a,[FromHeader(Name="qionghaha")] string? ha)
{
return ha;
}

 

get post 占位符

​​http://localhost:5124/Test/test/2/3​​

[HttpGet("{a1}/{a2}")]
public int test(int a1,int a2)
{
return a1+a2;
}

a1=2 a2=3

 

路由获取参数

 [FromRoute] 

[HttpGet("aaa/{a1}/bbb/{a2}")]
//获取地址里的a2重命名为xxx
public int test(int a1,[FromRoute(Name = "a2")] int xxx)
{
return xxx;
}

 

 通过参数进行依赖注入

[FromServices] 服务

[Route("[controller]/[action]")]
[ApiController]
public class TestController : ControllerBase
{

[HttpGet]
public int test([FromServices] Calculation calculation,int i)
{
return calculation.Add(2,3)*i;
}
}

注册

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

builder.Services.AddSwaggerGen();
builder.Services.AddSingleton<Calculation>();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}

app.UseAuthorization();

app.MapControllers();

app.Run();

public class Calculation
{
public int Add(int a,int b)
{
return a + b;
}
}

 



举报

相关推荐

0 条评论