Postman与AngularJS服务调用同一接口返回响应不一致问题
问题诊断与修复方案
别急,我帮你揪出问题所在了!你在AngularJS的$http请求配置里犯了个关键小错误——POST请求的参数应该放在data属性里,而不是你写的user属性。
问题根源
你用Postman调用接口时,是把{ name: "nick", password: "password" }作为请求体(Request Body)发送的,但你的AngularJS代码里,把这个登录参数放到了不存在的user字段里,导致后端完全接收不到登录数据,这就是控制台报错的核心原因。
修正后的代码
this.login = function (loginInfo) { return $http({ url: 'http://localhost/igt/api/public/signin', headers: { 'Content-Type': 'application/json' }, // 建议改成标准小写写法,兼容性更好 method: 'POST', data: { name: "nick", password: "password" } // 把原来的user替换成data! }) .then(function(response) { console.log(response); }, function (err) { console.log("err:"); console.log(err); }); };
补充说明
- AngularJS的
$http服务会自动把data属性中的JS对象序列化成JSON字符串,完美匹配你设置的application/json请求头,和Postman的请求行为完全一致。 - 把
Application/json改成小写的application/json是HTTP请求头的标准写法,能避免部分严格的后端框架出现兼容性问题。
内容的提问来源于stack exchange,提问作者BT101
相关产品推荐
相关产品推荐

