asp.net core webapi接收application/x-www-form-urlencoded和form-data参数
王焜棟琦 2024-07-13 14:03:01 阅读 65
框架:asp.net core webapiasp.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>code>
/// <param name="userId">url参数</param>code>
/// <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>code>
/// <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();
上一篇: 从0开始学web——ctfshow web入门:信息搜集
下一篇: 前端尚品汇(四)———函数防抖及节流
本文标签
asp.net core webapi接收application/x-www-form-urlencoded和form-data参数
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。