如何用Postman测试登录REST API?测试遇404错误求排查
如何解决Postman测试ASP.NET Web API登录接口时的404 Not Found错误?
我看了你的代码和配置,404 Not Found通常是路由配置顺序或者Postman请求设置出了问题,下面一步步帮你排查和解决:
一、先检查路由注册顺序(最可能的原因)
你的WebApiConfig已经启用了属性路由(config.MapHttpAttributeRoutes()),这没问题,但关键是Web API路由必须在MVC路由之前注册。如果Global.asax里的注册顺序反了,MVC的默认路由会先匹配请求,导致API接口被拦截,返回404。
打开你的Global.asax.cs,确保Application_Start方法里的注册顺序是这样:
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); // 第一步:注册Web API路由 GlobalConfiguration.Configure(WebApiConfig.Register); // 第二步:注册MVC路由 RouteConfig.RegisterRoutes(RouteTable.Routes); // 其他配置(比如过滤器、捆绑压缩等)放在后面 }
二、确保Postman的请求设置完全正确
你的Login接口是POST方法,且用了属性路由api/Users/Login,所以Postman的请求要严格对应:
- 请求方法:必须选
POST(不能用GET或其他) - 请求URL:格式为
http://你的域名:端口/api/Users/Login,比如本地调试是http://localhost:58792/api/Users/Login(替换成你自己的端口号) - 请求体:
- 切换到
Body标签,选择raw,然后在下拉框选JSON - 输入符合
Credential模型的JSON数据:{ "CompanyName": "你的测试公司名", "UserName": "测试用户名", "PassWord": "测试密码" }
- 切换到
- 请求头:Postman选
JSON格式后会自动添加Content-Type: application/json,如果没自动加,手动在Headers里添加这个键值对(这一步很重要,否则Web API无法解析请求体)
三、其他排查点
- 验证路由是否正确注册:如果你的项目启用了Web API帮助页(默认模板有),可以访问
http://localhost:端口/api/help,查看是否有POST api/Users/Login这个接口。如果看不到,说明路由没注册成功,回到第一步检查Global.asax的顺序。 - 检查IIS/调试服务器配置:确保你的调试服务器(比如IIS Express)没有阻止POST请求,或者没有设置额外的路由约束。
- 代码逻辑的小优化(非404原因,但建议调整):当登录失败时,你返回的是
Ok(log)(也就是Ok(null)),这不符合REST规范,建议改为return Unauthorized(),前端更容易判断登录状态。
按照上面的步骤排查,应该能解决404的问题。
内容的提问来源于stack exchange,提问作者Raj




