C# WebApi 接口传参详解

C# WebApi 接口传参详解

在 ASP.NET Core WebApi 的开发中,接口无疑是开发过程中非常重要的一部分。而对于接口传参,我们不仅需要对参数的类型、名称进行规范处理,还需要对传参方式、数据格式进行深入的了解。

本文将从接口传参的基础开始详细讲解,包括传参方式、数据格式、传递对象类型等内容。

传参方式

在 ASP.NET Core WebApi 中,接口的传参方式主要有两种:

  1. QueryString参数传递:通过在接口地址中携带参数,将参数作为请求的一部分传递给服务端。这种方式参数是以键值对的形式出现在URL地址中的,例如:
/api/user?id=123&name=john

客户端的请求URL会包含查询字符串?id=123&name=john,服务端接口可以根据查询字符串中的参数进行相关的处理。

  1. Body参数传递:通过发送HTTP请求体中的数据传递参数,一般用于传递复杂的对象。这种方式一般使用POST、PUT等请求方法发送,参数数据在请求体中以一定格式(如JSON、XML)进行发送。

数据格式

接口参数的数据格式,指的是传参时所使用的具体规范。常见的数据格式主要有:

  1. x-www-form-urlencoded:键值对的形式出现在请求体中,变量之间以&符号分隔,如field1=value1&field2=value2。这种格式传递的数据通常比较简单,如表单等。

  2. multipart/form-data:常见于文件上传,可以携带二进制文件数据。该格式请求头包含Content-Type: multipart/form-data, 请求体内容比较复杂,需要对表单用分隔符进行拆分。

  3. application/json:JSON字符串作为请求体发送给服务端。该格式在处理复杂数据对象时使用较多。

  4. application/xml:XML数据作为请求体发送给服务端。

传递对象类型

在 WebApi 中,我们一般通过DTO(Data Transfer Object)的形式进行数据传递,DTO可以理解为服务端与客户端之间传递的数据模型。我们可以使用简单的POCO(Plain Old CLR Object)类定义DTO,同时使用属性、字段等进行数据封装。

下面是一个示例:

public class UserInfoDto
{
    public string Name { get; set; }
    public int Age { get; set; }
}

客户端可以通过传递JSON字符串或URL参数的形式将UserInfoDto对象传递给服务端接口。

例如:

POST /api/user HTTP/1.1
Host: api.example.com
Content-Type: application/json
Content-Length: 53

{"Name":"john","Age":23}

服务端接口可以使用以下代码进行接收:

[HttpPost]
public IActionResult Post([FromBody] UserInfoDto userInfoDto)
{
    // do something with userInfoDto
}

示例说明

下面是一个URL参数传递的示例。

假设我们要通过 /api/user 接口查询用户信息,查询参数包括Name、Age、Gender三个字段。我们可以将查询参数组成QueryString的形式进行传递。

[HttpGet]
[Route("api/user")]
public IActionResult GetUserInfo([FromQuery] string name, int age, GenderEnum gender)
{
    // do something
}

示例2是一个JSON参数传递的示例。

假设我们要通过 /api/user 接口创建新用户,客户端需要向服务端传递一个UserInfoDto对象,包括Name、Age两个字段。

[HttpPost]
[Route("api/user")]
public IActionResult AddUser([FromBody] UserInfoDto userInfoDto)
{
    // do something
}

客户端可以使用以下代码进行请求。

var userInfoDto = new UserInfoDto
{
    Name = "john",
    Age = 23
};
var jsonStr = JsonSerializer.Serialize(userInfoDto);
var content = new StringContent(jsonStr, Encoding.UTF8, "application/json");

using var httpClient = new HttpClient();
var response = await httpClient.PostAsync("https://api.example.com/api/user", content);

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C# WebApi 接口传参详解 - Python技术站

(1)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • 云计算–网络原理与应用–20171123–网络地址转换NAT

    NAT的概述 NAT的配置 实验 一. NAT的概述   NAT(Network address translation,网络地址转换)通过将内部网络的的私有地址翻译成全球唯一的共有网络IP地址,是内部网络可以连接到互联网。   NAT自动修改IP包头中的源IP地址或者目的IP地址,IP地址的校验则在NAT处理过程中自动完成。      NAT实现方式: 静…

    云计算 2023年4月10日
    00
  • Pytorch中关于model.eval()的作用及分析

    PyTorch中的model.eval()方法用于将模型设置为评估模式。在评估期间,模型会禁用一些不需要的特性,比如dropout和batch normalization的随机性操作,从而使得模型对于测试集的结果更加稳定。在model.eval()之后使用的模型的前向传递中,dropout等随机性操作的线性规则不会应用/执行。 通常在PyTorch训练和测试…

    云计算 2023年5月18日
    00
  • 【云计算的1024种玩法】为喜欢的人建一个网站

    点击查看全文 曾几何时,你是不是也为不知道怎么向心爱的人表白而苦恼,书信略显古老,微信稍微有点随意,那么,从今天起,一种高大上的表白方式正式上线阿里云——“为喜欢的人建一个网站”。即使您是能够“攻城掠地”的工程师,也会苦于没有后台服务器的支撑,没关系,阿里云服务器ECS为您解忧;也许您是一个非IT行业人士,对网页一无所知,没关系,我们给您提供一整套的服务,您…

    云计算 2023年4月13日
    00
  • 微软智能云布局高端服务,全面升级云计算竞争

    在微软新一季财报中,微软智能云Azure收入增长140%,其中高端服务收入比去年同期增长近3倍。自2015年以来,微软正在发力高端云服务市场,全面升级云计算竞争。 在微软新一季财报中,微软智能云Azure收入增长140%,其中高端服务收入比去年同期增长近3倍。自2015年以来,微软正在发力高端云服务市场,全面升级云计算竞争。 根据标准普尔Capital IQ…

    云计算 2023年4月13日
    00
  • 华为云发布冷启动加速解决方案:助力Serverless计算速度提升90%+

    摘要:本文介绍了华为云对冷启动优化这一业界难题的探索之路,创新提出了基于进程级快照的优化方案。 作者信息—— 子游:华为元戎高级工程师 平山:华为云中间件 Serverless 负责人 琪君:华为元戎负责人 Key Takeaways 冷启动 (Cold Start)一直是Serverless领域面临的优化难题之一,华为云创新提出了基于进程级快照的冷启动加速…

    云计算 2023年4月13日
    00
  • 深入浅析Python数据分析的过程记录

    深入浅析Python数据分析的过程记录 1. 搜集数据 数据分析的第一步是搜集数据,数据可以来自各种来源,比如公共数据集、爬虫抓取、用户上传等。在搜集之前需要明确自己的目标,需要分析什么样的数据,才能有的放矢地进行搜集,避免浪费时间和精力。 示例1:使用爬虫抓取数据如果我们想要分析某个电商网站的商品信息和评论,可以使用Python的爬虫技术进行数据抓取。可以…

    云计算 2023年5月18日
    00
  • 使用openstack部署云计算服务环境

    环境: 系统                      硬盘        IP            hostname redhat 7               sda 20G     192.168.0.70      openstack.com 64位                 sdb 20G    配置网卡 [root@openstack …

    2023年4月10日
    00
  • 云计算的一些名词

    云计算的目标是:按需服务,提供的服务可以是基础设施,也可以是平台,也可以是软件,即: 公共云服务一般来说包括:IaaS、PaaS、SaaS 三类服务。 即:Infrastructure(基础设施)-as-a- Service,Platform(平台)-as-a-Service,Software(软件)-as-a-Service。 如下图:     IaaS是…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部