.NetCore项目中的Api接口

ApiController特性

FromBody属性批注

ApiController特性中的FromBody属性批注,使用该属性批注的接口只能通过application/json方式调用。使用其他方式则会响应415

通过application/x-www-form-urlencoded 方式调用
使用其他方式调用FromBody批注的接口

通过application/json 方式调用
使用application/json 方式调用

FromForm属性批注

ApiController特性中的FromForm属性批注,使用该属性批注的接口无法接收到通过application/json 方式的参数、即相当于只能通过application/x-www-form-urlencoded 方式调用。

通过application/json 方式调用传参
参数为空
通过application/x-www-form-urlencoded 方式调用
操作成功

使用ApiController特性代码示例

	[ApiController]
	[Route("api/[Controller]/[Action]")]
    public class TestController :ControllerBase
    {
    	[HttpPost("/test")]
    	public string Test(string msg)
    	{
    		JObject jo = JObject.Parse(msg);
    		string name = Convert.ToString(jo["Name"]);
    		return name;
    	}

		[HttpPost("/test1")]
    	public string Test1([FromBody]string msg)
    	{
    		JObject jo = JObject.Parse(msg);
    		string name = Convert.ToString(jo["Name"]);
    		return name;
    	}
    	
    	[HttpPost("/test2")]
    	public string Test2([FromForm]string msg)
    	{
    		JObject jo = JObject.Parse(msg);
    		string name = Convert.ToString(jo["Name"]);
    		return name;
    	}
    }

以上代码中有三个Api接口,它们的区别为test接口未使用任何属性批注,test1接口使用了[FromBody]属性批注,test2接口使用了[FromForm]属性批注。
未使用属性批注的接口参数是在URL中传递的,即访问地址为:http//ip:port/test?msg=“{“Name”:“Xiaoming”}”
使用属性批注参数是在Body中,但类型不一致

使用Visual Studio编写项目本地调试时,Swagger接口文档页面调用接口不论使用哪种批注均可调用成功。因为Swagger会自动选择访问类型。

同一个接口多个参数不可同时使用FromBody与FromForm。如果有多个参数建议封装为一个实体类,对实体类参数进行属性批注。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值