当前位置:首页 » 《资源分享》 » 正文

开发 .NET 8 Web API 以使用 IActionResult 返回热门内容类型(text/plain、application/json /xml /octet-stream)

10 人参与  2024年12月13日 18:00  分类 : 《资源分享》  评论

点击全文阅读


.NET 8Visual Studio 2022Insomnia(或其他 API 测试平台)

涵盖的 Web API 内容类型

text/plainapplication/jsonapplication/xmlapplication/octet-stream

什么是 Content-Type?
        对于 HTTP 调用,有一个名为“Content-Type”的标头值。它显示一个与在进行任何编码之前附加到 HTTP 调用的资源/内容的媒体类型相对应的值。

入门 - 创建 .NET Web API 项目
        我们首先需要打开 Visual Studio 2022 并创建一个 Web API:

选择 ASP.NET Core Web API 

选择正确的项目后,我们需要命名它并为.NET 8 进行配置。 

一旦我们创建了项目,我们将需要删除包含的样板文件:WeatherForecaseController.cs 和 WeatherForecast.cs

之后,继续创建一个空的新 API 控制器并将其命名为 ContentTypeController.cs:

现在我们已经设置了 Web API,我们可以继续测试开发服务器 IIS Express(Internet Information Services Express):

单击开始后,“Swagger UI”页面将在您选择的浏览器中打开。我们可以通过单击任务栏中的胡萝卜并右键单击 IIS Express 图标来检查我们的 IIS Express 是否正在运行:

现在我们知道 IIS Express 运行良好,我们可以通过单击停止图标在 Visual Studio 中停止我们的应用程序。

text/plain

最简单的内容类型是“text/plain”。

在我们的“ContentTypeController”中,我们需要添加以下代码行: 

// GET: api/<ValuesController>/textplainstring
[HttpGet]
[Route("textplainstring")]
public IActionResult GetTextPlainString()
{
    return Ok("text/plain");

        我们正在向调用者返回 IActionResult。IActionResult 是最佳做法,因为它可以灵活地在同一调用中返回不同类型、对象或状态代码。

        上面显示我们的值作为参数传递给继承的“ControllerBase”类提供的 Ok() 方法。在 .NET 8 中,默认情况下,字符串会自动格式化为“text/plain”。

        Ok() 方法返回“OkObjectResult”。此回合是“ObjectResult”的子项 — — 后者也继承了“IActionResult”。

        如果我在 Visual Studio 中运行 Web API,我可以使用 Insomnia 调用该 API:

application/json 

最常用的内容类型之一是“application/json”。

JSON 代表 JavaScript 对象表示法。

在我们的“ContentTypeController”中,我们需要添加以下代码行:

// Tree Class
public class Tree
{
    public int apples { get; set; }
}
// GET: api/<ValuesController>/applicationjson
[HttpGet]
[Route("applicationjson")]
public IActionResult GetApplicationJson()
{
    Tree tree = new() { apples = 10 };
    return Ok(tree);
}

因为我们返回的是 IActionResult 类型的对象,所以 .NET 知道自动序列化传递的参数。

如果我在 Visual Studio 中运行 Web API,我可以使用 Insomnia 调用该 API:

application/xml

JSON 的古老且更为复杂的兄弟是 XML。

XML 代表“可扩展标记语言”。

对于这种类型,我们首先需要向“Program.cs”添加代码:

在上面的照片中,我需要修改第 5 行使其看起来像这样: 

builder.Services.AddControllers().AddXmlSerializerFormatters(); 

添加此行代码将 XML 格式化程序注入到使用 XmlSerializer 的控制器中。

接下来,在我们的“ContentTypeController”中,我们需要添加以下代码行:

// GET: api/<ValuesController>/applicationxml
[HttpGet]
[Route("applicationxml")]
[Produces("application/xml")]
public IActionResult GetApplicationXml()
{
    Tree tree = new() { apples = 10 };
    return Ok(tree);

上述代码与用于 JSON 的代码几乎相同,最大的区别是“[Produces(“application/xml”)]”。

以前,当返回 JSON 对象时,.NET 会将其隐式序列化为 JSON。

对于 XML,我们现在必须明确添加“Produces”格式化程序以确保正确的序列化。

如果我在 Visual Studio 中运行 Web API,我可以使用 Insomnia 调用该 API:

application/octet-stream 

此内容类型用于返回可能有或可能没有文件类型的二进制文件。

由于一个字节有 8 位,因此使用八位字节作为名称。

在我们的“ContentTypeController”中,我们需要添加以下代码行:

// GET: api/<ValuesController>/applicationoctetstream
[HttpGet]
[Route("applicationoctetstream")]
public IActionResult GetApplicationOctetStream()
{
    byte[] bytes = Encoding.Unicode.GetBytes("hello");
    return File(bytes, "application/octet-stream");
}

        由于我们的控制器继承了“ControllerBase”,我们可以调用可用的“File”方法。由于我们提供的是字节,因此该方法返回“FileContentResult”响应。如果我们使用 Stream,它将返回“FileStreamResult”。如果我们要提供虚拟路径(即由服务器混淆的路径),则还会有一个“VirtualFileResult”。

        如果我在 Visual Studio 中运行 Web API,我可以使用 Insomnia 调用该 API:

这就是返回的全部内容

text/plainapplication/jsonapplication/xmlapplication/octet-stream 

在 .NET 8 Web API 中使用 IActionResult 返回流行的 Content-Type。 

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/200782.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1