当前位置: 首页 > news >正文

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类型参数
    • 接收URL参数
    • 接收上传的文件
    • webapi接收json参数
    • 完整控制器,启动类参考
    • Program.cs

接收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参数

{"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();
http://www.lryc.cn/news/310545.html

相关文章:

  • 程序环境和预处理(2)
  • Redis安全加固策略:绑定Redis监听的IP地址 修改默认端口 禁用或者重命名高危命令
  • Vuepress的使用
  • docker安装php7.4安装
  • 曲线生成 | 图解Dubins曲线生成原理(附ROS C++/Python/Matlab仿真)
  • 「Vue3系列」Vue3 组件
  • Git实战(2)
  • Java ElasticSearch-Linux面试题
  • 微信小程序通过服务器控制ESP8266
  • 题目 1434: 蓝桥杯历届试题-回文数字
  • 访问修饰符、Object(方法,使用、equals)、查看equals底层、final--学习JavaEE的day15
  • 『大模型笔记』最大化大语言模型(LLM)的性能(来自OpenAI DevDay 会议)
  • 深度学习:开启你的AI探索之旅
  • 第十四届蓝桥杯大赛B组 JAVA 蜗牛 (递归剪枝)
  • 基于React低代码平台开发:构建高效、灵活的应用新范式
  • 在Linux部署Docker并上传静态资源(快速教程)
  • 【场景测试用例】带有广告图案的纸杯
  • 《TCP/IP详解 卷一》第10章 UDP 和 IP 分片
  • MyBatisPlus(SpringBoot版)的分页插件
  • 【小沐学QT】QT学习之信号槽使用
  • SpringMVC总结
  • JS一些重要函数
  • 基于视觉识别的自动采摘机器人设计与实现
  • 算法D32 | 贪心算法2 | 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II
  • 【iOS ARKit】协作 Session 实例
  • 云原生精品资料合集(附下载)
  • JVM 第一部分 JVM两种解释器 类加载过程和类加载器
  • 用Java语言创建的Spring Boot项目中,如何传递数组呢??
  • [笔记] 使用 Java Swing 实现一个简单的窗口
  • 2024.03.03蓝桥云课笔记——排序