.net core 学习小结之 PostMan报415

  • 首先415的官方解释是:对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。
  • 也就是说我所准备的数据格式并不是后台代码使用的数据格式
  • 后台代码如下
    复制代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;
    
    namespace JwtAuth.Controllers
    {
        using System.Security.Claims;
        using Microsoft.Extensions.Options;
        using Microsoft.IdentityModel.Tokens;
        using Microsoft.AspNetCore.Authentication.JwtBearer;
        //添加dll的引用 Nuget Microsoft.AspNetCore.Authentication.JwtBearer;
        using System.IdentityModel.Tokens.Jwt;
         [Route("api/[controller]")]
        public class AuthController : Controller
        {
            public JwtSettings settings;
            public AuthController(IOptions<JwtSettings> jwtsettings)
            {
                settings = jwtsettings.Value;
            }
            [HttpPost]
            public IActionResult Token([FromBody]LoginInfo model)
            {
                if (ModelState.IsValid)
                {
                    if (model.username == "cyao" && model.password == "123456")
                    {
                        //用户合法情况
                        //添加授权信息
                        var claims = new Claim[] { new Claim(ClaimTypes.Name, "cyao"), new Claim(ClaimTypes.Role, "admin") };
                        var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(settings.SecretKey));
                        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
                        var token = new JwtSecurityToken(
                            settings.Issuer,
                            settings.Audience,
                            claims,
                            DateTime.Now,
                            DateTime.Now.AddMinutes(30),//过期时间
                            creds);
                        return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) });
                    }
                }
                return BadRequest();
            }
        }
        public class LoginInfo
        {
            [Required]
            public string username { get; set; }
            [Required]
            public string password { get; set; }
        }
    }
    复制代码
  • 使用POSTMan如何构造一个
    [FromBody]?错误示例(图1.0)
  • 正确示例如下图2.0(图2.0)
  • 或者使用图1.0的配置将后台代码参数的标签改成[FromForm]
posted @   雨V幕  阅读(5684)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示