首页 > 编程语言 >ASP.NET Core API模型绑定和Action数据返回格式

ASP.NET Core API模型绑定和Action数据返回格式

时间:2023-03-22 17:36:30浏览次数:51  
标签:Core ASP string form ActionResult API using logger public

参考文档:https://www.cnblogs.com/FlyLolo/p/ASPNETCore2_20.html

模型绑定

  • [FromQuery] - 从URL中取值。
  • [FromRoute] - 从路由中取值。
  • [FromForm] - 从表单中取值。Postman使用form-datax-www-form-urlencoded调用。Content-Type对应multipart/form-dataapplication/x-www-form-urlencoded
  • [FromBody] - 从HTTP Body取值,通常用于取实体类的JSON, XML。Postman使用raw调用。Content-Type对应application/json
  • [FromHeader] - 从请求头中取值。
  • [FromServices]- 从DI容器取值,获取服务。DI预设是使用Constructor Injection

multipart/form-data与x-www-form-urlencoded区别

  • multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息。
  • x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。

raw

  • 可以上传任意格式的文本,可以上传text、json、xml、html等

binary

  • 相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。
using Microsoft.AspNetCore.Mvc;
using System;
using WebApplication1.Filter;

namespace WebApplication1.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }


        [HttpGet]
        public void Get()
        {

           
        }

        [HttpGet("FirstSample/{id}")]
        public IActionResult FirstSample(
      [FromHeader] string header,
      [FromForm] string form,
      [FromRoute] string id,
      [FromQuery] string query)
        {
            return Ok($"header: {header}, form: {form}, id: {id}, query: {query}");
        }

        public IActionResult DISample([FromServices] ILogger<WeatherForecastController> logger)
        {
            return Content($"logger is null: {logger == null}.");
        }

        public IActionResult BodySample([FromBody] Test model)
        {
            return Ok(model);
        }

        [WebApiAttribute]
        [HttpPost("Post")]
        public Test Post([FromBody] Test test)
        {
            return test;
        }

        [WebApiAttribute]
        [HttpPost("UploadFile")]
        public void PostList([FromForm] string person, [FromForm] IFormCollection formCollection)
        {
            var file = formCollection.Files.GetFile("filename");
            using var ms = new MemoryStream();
            file.CopyTo(ms);
            var fileBytes = ms.ToArray();
            //var fileStream = file.OpenReadStream();
            //using var bytes = new byte[file.Length];
            //fileStream.Read(bytes, 0, (int)file.Length);
            Console.WriteLine(person);
        }

    }

    public class Test { 
    
        public string Name { get; set; }
        public string Summary { get; set; }
    }
}

Action数据返回格式

using System.Threading.Tasks;
using System.Net.Http.Json;
using System.IO;
using System;
using Microsoft.AspNetCore.Mvc;

namespace WebApplication3.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class HomeController : Controller
    {

        public IActionResult Index() => Redirect("/swagger");

        [HttpGet("ObjStr")]
        public IActionResult Obj() => Ok(123546);

        //返回任意值
        public async Task<ActionResult> OkObj() => Ok(await Task.FromResult(1));

        //返回文本
        public ActionResult ContentResultDemo() => Content(Guid.NewGuid().ToString());

        //返回一个空对象
        public ActionResult EmptyResultDemo() => new EmptyResult();

        /// <summary>
        /// FileContentResult的用法(返回图片)
        /// </summary>
        /// <returns>显示一个文件内容</returns>
        public ActionResult FileContentResultDemo()
        {
            FileStream fs = new FileStream(Path.Combine(@"/Images/001.jpg"), FileMode.Open, FileAccess.Read);
            byte[] buffer = new byte[Convert.ToInt32(fs.Length)];
            fs.Read(buffer, 0, Convert.ToInt32(fs.Length));
            string contentType = "image/jpeg";
            return File(buffer, contentType);
        }

        //返回一个文件对象
        public ActionResult FilePathResult() => File(Path.Combine(@"/Images/123.jpg"), "image/jpeg");

        //HttpUnauthorizedResult 的用法(抛出401错误)
        public ActionResult HttpUnauthorizedResult() => Unauthorized();

        //HttpStatusCodeResult的方法(返回错误状态信息)
        public ActionResult HttpStatusCodeResultDemo() => StatusCode(500, "System Error");

        // HttpNotFoundResult的使用方法
        public ActionResult HttpNotFoundResultDemo() => NotFound("not found action");

        //返回一个json对象
        public ActionResult JsonResultDemo() => Json(new { name = "json" });

        //RedirectResult的用法(跳转url地址)
        public ActionResult RedirectResultDemo() => Redirect("https://www.baidu.com/");

        //RedirectToRouteResult的用法(跳转的action名称)
        public ActionResult RedirectToRouteResultDemo() => RedirectToAction(@"FileContentResultDemo");

        // ViewResult的用法(返回视图)
        public ActionResult ViewResultDemo() => View();

        //PartialViewResult的用法(返回部分视图)
        public PartialViewResult PartialViewResultDemo() => PartialView();
    }
}

标签:Core,ASP,string,form,ActionResult,API,using,logger,public
From: https://www.cnblogs.com/RainFate/p/17244828.html

相关文章

  • ASP.NET Core 诊断工具
    .NETCore诊断全局工具.NETCore诊断工具官方地址dotnet-countersdotnet-counters是一个性能监视工具,用于初级运行状况监视和性能调查。它通过EventCounterAPI观......
  • rapid-framework(java web快速开发脚手架,代码生成器)
    web项目脚手架rapid-framework是一个以spring为核心的项目脚手架(或者称为胶水框架),框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)搭......
  • lazada按关键字搜索商品 API
    为了进行电商平台的API开发,首先我们需要做下面几件事情。1)开发者注册一个账号2)然后为每个Lazada应用注册一个应用程序键(AppKey)。3)下载LazadaAPI的SDK并掌握基本的API......
  • 关于asp.net core filters生命周期的探究
    1.背景昨天看了关于一篇api限流的文章,ASP.NETCoreWebApi接口限流,作者给出了demo,写的很好,但是我看了一遍,api限流用actionfilterattribute,觉得很奇怪,难道说每次都是用的......
  • java 微信支付v3 —6.微信支付查询订单API
    正文什么时候会用到这个API?常规情况下,回调接口已经足够我们使用,用户支付成功后,微信会自动调用我们的回调接口进行回调,那么还需要这个API吗?使用场景:微信服务器故障,我们的服......
  • .NET Core WebApi接口ip限流实践
    .NETCoreWebApi接口ip限流实践前言之前一直想实现接口限流,但一直没去实现,然后刚好看到一篇文章是基于AspNetCoreRateLimit组件的限流策略。这个组件不做多的介绍,想了......
  • Centos安装部署netcore 包含Nginx,Supervisor等
    安装.NETCoreSDK安装libicu依赖yuminstalllibunwindlibicu注册dotnet的repository您需要注册Microsoft签名密钥并添加Microsoft产品提要sudorpm-Uvhhttps://packag......
  • .NET Core 3.0-preview3 发布
    .NETCore3.0Preview3已经发布,框架和ASP.NETCore有许多有趣的更新。这是最重要的更新列表。下载地址:​​https://aka.ms/netcore3download​​。​​.NETCore3.0......
  • .netcore 在Linux(Centos)使用Docker方式部署
    运行环境假设你已经安装好了.netcore运行环境,未配置可以看这篇​​[linux(centos)搭建.netcore运行环境]​​centos:7.2cpu:1核2G内存1M带宽docker:18.06.1-ce安装docke......
  • 10个小技巧助您写出高性能的ASP.NET Core代码
    今天这篇文章我们来聊一聊如何提升并优化ASP.NETCore应用程序的性能,本文的大部分内容来自翻译,当然中间穿插着自己的理解,希望对大家有所帮助!话不多说开始今天的主题吧!我们......