asp.net core webapi接收application/x-www-form-urlencoded和form-data参数

这篇具有很好参考价值的文章主要介绍了asp.net core webapi接收application/x-www-form-urlencoded和form-data参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 框架:asp.net core webapi
  • asp.net core webapi接收参数,请求变量设置

接收multipart/form-data、application/x-www-form-urlencoded类型参数

Post ([FromForm]TokenRequestInput user)
可以接收发送类型为multipart/form-data、application/x-www-form-urlencoded的数据

  [HttpPost]
  public async Task<IActionResult> ChangePhoneNum([FromForm] TokenRequestInput user)
  {     
      return Ok(11222);
  }

  /// <summary>
  /// 用户信息
  /// </summary>
  public class TokenRequestInput
  {
      /// <summary>
      /// 微信 用户的openid
      /// </summary>
      public string? openid { get; set; }

      /// <summary>
      /// 微信头像图片,base64字符串
      /// </summary>
      public string? head_img_base64 { get; set; }

      /// <summary>
      /// 微信昵称
      /// </summary>
      public string? nichen { get; set; }

       
  }

接收URL参数

请求地址
http://localhost:5170/api/User/GetToken?code=22222

 [HttpGet]
 public async Task<IActionResult> GetToken(string code)
 {
     var result = await wxAppletLoginBll.GetLoginToken(code);
     return Ok(result);
 }

接收上传的文件

IFormFile file这个参数是接收文件,mimeType=multipart/form-data
参数userId,通过url参数传入

/// <summary>
/// 接收上传的文件
/// </summary>
/// <param name="file">文件二进制</param>
/// <param name="userId">url参数</param>
/// <returns></returns>
[HttpPost]
public async Task<IActionResult> GetAdd(IFormFile file, string userId)
{ 
    return Ok("ok");
}

webapi接收json参数

发送json参数文章来源地址https://www.toymoban.com/news/detail-851616.html

{
  "openid": "string",
  "head_img_base64": "string",
  "nichen": "string"
}
  [HttpPost]
  public async Task<IActionResult> AddUser(TokenRequestInput user)
  {    
      return Ok(3344);
  }

完整控制器,启动类参考

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WebProjectNet7.DataBaseEntity.Entity;
using WebProjectNet7.IBLL;
using WebProjectNet7.ViewEntity;

namespace Api_BigData.Controllers
{
    /// <summary>
    /// 预警
    /// </summary>
    [Route("api/[controller]/[action]")]
    [MyRequestFilter]
    [ApiController]
    public class WarningController : ControllerBase
    {
        readonly IWaringLogBll waringLogBll = AppServicesHelpter.GetServices<IWaringLogBll>();


        /// <summary>
        /// 设置预警记录,已经读了
        /// </summary>
        /// <param name="logId">预警id</param>
        /// <returns></returns>
        [HttpGet]
        public async Task<IActionResult> SetReadedAsync(long logId)
        {
            var data = await waringLogBll.SetReadedAsync(logId);
            return Ok(data);
        }
	}
}

Program.cs

using Api_BigData;
using InterfaceRegister;
using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Options;
using Microsoft.OpenApi.Models;
using Mysqlx;
using Newtonsoft.Json.Serialization;
using System.Reflection;
using WebProjectNet7.DataBaseEntity.Tool;
using WebProjectNet7.IBLL;
using WebProjectNet7.IBLL_impl;
using WebProjectNet7.IDAO;
using WebProjectNet7.IDAO_impl;
using WebProjectNet7.ViewEntity;

const string title = "测试, 大数据webapi";

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers(
    ops =>
    {
        //全局异常过滤器,注册
        ops.Filters.Add<ExceptionFilter>();
    }
).AddNewtonsoftJson(options =>
{
//不设置,字段为首字母小写;
    options.SerializerSettings.ContractResolver = new DefaultContractResolver();
    options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
});

// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(options =>
{
    options.SwaggerDoc("v1", new OpenApiInfo { Title = title, Version = "1.0" });

    // 让Swagger显示每个接口的注释
    var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename));

    //实体字段描述
    options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "WebProjectNet7.DataBaseEntity.xml"));
    options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "WebProjectNet7.ViewEntity.xml"));
});

//依赖注入
//微信业务接口
builder.Services.AddSingleton<IWxAppletLoginBll, WxAppletLoginBll_impl>();

//公共部分接口
RegisterHandle.Register(builder);

//IHttpContextAccessor 在其他程序集中获取HttpContext
builder.Services.AddHttpContextAccessor();

var app = builder.Build();

 Configure the HTTP request pipeline.
//if (app.Environment.IsDevelopment())
//{
//    app.UseSwagger();
//    app.UseSwaggerUI();
//}

//生产环境也使用
app.UseSwagger();
app.UseSwaggerUI(options =>
{
    options.DocumentTitle = title;
});

app.Use(async (context, next) =>
{
    if (context.Request.Method == "OPTIONS")
    {
        //允许处理跨域
        context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
        context.Response.Headers.Add("Access-Control-Allow-Headers", "*");
        context.Response.Headers.Add("Access-Control-Allow-Methods", "*");
        await context.Response.CompleteAsync();
    }
    else
    {
        //允许处理跨域
        context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
        context.Response.Headers.Add("Access-Control-Allow-Headers", "*");
        context.Response.Headers.Add("Access-Control-Allow-Methods", "*");
        await next();
    }
});

string direxport = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "wx_head_img");
if (!System.IO.Directory.Exists(direxport))
{
    System.IO.Directory.CreateDirectory(direxport);
}

app.UseStaticFiles(new StaticFileOptions()
{
    RequestPath = new PathString("/wx_head_img"),
    FileProvider = new PhysicalFileProvider(direxport)
});

app.UseAuthorization();

app.MapControllers();

AppServicesHelpter.App = app;

app.MapGet("/", () => "Hello World,欢迎," + title + ",访问/swagger 查看接口文档");

app.Run();

到了这里,关于asp.net core webapi接收application/x-www-form-urlencoded和form-data参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Asp.NET Core WebAPI 入门学习笔记,超详细

    WebAPI 是一种传统的方式,用于构建和暴露 RESTUI风格的Web服务。它提供了丰富的功能和灵活性,可以处理各种HTTP请求,并支持各种数据格式,如JSON、XML等。 WebAPI使用控制器(Controllers)和动作方法(ActionMethods)的概念、通过路由配置将请求映射到相应的方法上。 开发人员可以使用

    2024年04月24日
    浏览(48)
  • application/x-www-form-urlencoded

    在请求中,有一种数据传输的 Content-Type 是 application/x-www-form-urlencoded 。 这种数据格式的接口,在发送请求时,与我们习惯的 application/json 的形式不一样。这半个月,有个地方没理解透,被坑了很长时间。接口是通的,按接口的要求,把数据传输过去,收到的结果始终是处理

    2024年02月11日
    浏览(29)
  • asp.net core webapi如何执行周期性任务

    新建asp.net core webapi项目,使用Nuget搜索安装Quartz包。 注意:定时执行时间格式,参考连接:https://www.cnblogs.com/wudequn/p/8506938.html 在IIS中找到这个站点所用的程序池,点击“高级设置…” 在打开的列表中更改以下设置: 回收——固定时间间隔(分钟) 改为 0 ——虚拟/专用内存

    2024年02月13日
    浏览(33)
  • .net 温故知新【17】:Asp.Net Core WebAPI 中间件

    到这篇文章为止,关于.NET \\\"温故知新\\\"系列的基础知识就完结了,从这一系列的系统回顾和再学习,对于.NET core、ASP.NET CORE又有了一个新的认识。 不光是从使用,还包括这些知识点的原理,虽然深入原理谈不上,但对于日常使用也够了,我想的是知其然,知其所以然。 在实际

    2024年01月18日
    浏览(39)
  • ASP.NET CORE WEBAPI 登录 JWT 鉴权 ,接口权限验证

    介绍 当今Web开发中,API的使用越来越广泛,而API的安全性也变得越来越重要。其中,JWT(JSON Web Token)鉴权和授权是一种常见的解决方案。 本篇文章将会介绍JWT鉴权和授权的原理、实现方式以及注意事项。 什么是JWT? JWT是一种基于JSON格式的开放标准(RFC7519),用于在网络

    2023年04月21日
    浏览(45)
  • .net 温故知新【11】:Asp.Net Core WebAPI 入门使用及介绍

    在Asp.Net Core 上面由于现在前后端分离已经是趋势,所以asp.net core MVC用的没有那么多,主要以WebApi作为学习目标。 我使用的是VS2022, .Net 7版本。 在创建界面有几项配置: 配置Https 启用Docker 使用控制器 启用OpenAPI支持 不使用顶级语句 其中配置Https 是WebApi是否使用https协议,启

    2024年02月07日
    浏览(30)
  • ASP.NET Core WebAPI如何获得远程文件返回文件流给前端?

      项目采用的是前后端分离的模式,后端使用ASP.NET Core WebAPI方式,将文件流返回给前端。   前端采用的是Vue技术栈,采用的是axios调用后端接口。前端无法获得fileName需要修改后端ASP.NET Core WebAPI项目中的【Startup.cs】文件。  修改ConfigureServices方法中的AddCors。   代码示例:

    2024年02月15日
    浏览(37)
  • 前后端分离,Asp.net core webapi 简单 2 步,轻松配置跨域

    可以说,前后端分离已经成为当今信息系统项目开发的主流软件架构模式,微服务的出现,让前后端分离发展更是迅速,大量优秀的前端框架如 vue.js、react 的出现,也让前后端分离趋势加快。 所谓的前后端分离软件架构模式,就是指将前端和后端的开发完全分离,后端负责

    2024年01月17日
    浏览(34)
  • ASP.NET Core 8.0 WebApi 从零开始学习JWT登录认证

    我一起写后端Api我都是直接裸连的,但是现在为了规范一些,我还是打算上一个JWT功能 ASP.NET Web API 2系列(四):基于JWT的token身份认证方案 Jwt-dotnet github 选好了模板,就进去看看号了,42M的下载量已经很高了,一般来说,只要超过500k的下载量,基本就是一个稳定的代码仓库了

    2024年04月09日
    浏览(35)
  • java restful application/x-www-form-urlencoded 传递参数

            在发送短信的时候,要使用x-www-form-urlencoded的编码格式进行传递参数。  具体要求: 参数名称 说明 备注 userId 用户名 timespan 时间戳 格式为yyyyMMddHHmmss password 密码 此处用原始密码+时间戳 做MD5加密,32位大写格式   phone 手机号 多个用英文逗号隔开 msgType 编码类型 选

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包