【问题标题】:Laravel api returns value in postman but returns empty array in Vue jsLaravel api在邮递员中返回值,但在Vue js中返回空数组
【发布时间】:2020-12-31 22:25:35
【问题描述】:

我有一个内置在 laravel 中的小型 Api,它应该在命中端点时返回响应。 问题是,同样的端点在邮递员中返回一些东西,但在 Vue Js 中返回空数据。 我已经为此奋斗了 48 小时,这让我发疯了,任何帮助将不胜感激。 谢谢

public function search_passport(Request $request){

        $pass = DB::table('passengers')->where('passport_number',$request->input('passport_number'))->get();

        if($pass->count() == 0){
            return response(['message' => 'Passport number not found, please fill the form']);
        }
        return new PassengerResource($pass);
    }// search_passenger

以上是Api中控制器的代码

Route::post('/searchpassport', [PassengerController::class, 'search_passport']);

这是路线

 this.$http.post('searchpassport', this.passport_number, {headers:{
        'Authorization' :  'Bearer ' + this.token.access_token,
        'Accept' : 'application/json',
        'Content-Type' : 'application'
        }})
         .then(res => {
             console.log(res)
         })

这也是我在 Vue Js 中进行的 API 调用

【问题讨论】:

  • 什么是$http

标签: javascript mysql laravel vue.js postman


【解决方案1】:

假设this.$http 是Axios 而this.passport_number 是一个字符串,那么您缺少请求有效负载的字段/属性名称,即"passport_number"。此外,您的 Content-type 标头不正确。

试试这个

this.$http.post("/searchpassport", {
  passport_number: this.passport_number
}, {
  headers: {
    Authorization: `Bearer ${this.token.access_token}`
  }
})

您不需要提供 AcceptContent-type 标头。默认值就足够了。


最好使用浏览器的开发工具进行调试。 Network 选项卡尤其适合检查 HTTP 请求中发送的标头和数据以及返回的响应。

【讨论】:

  • Phil 非常感谢,现在正在工作,我按照您的建议将有效负载作为对象传递并删除了 Accept 和 Content-Type 标头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 2020-11-17
  • 1970-01-01
  • 2018-11-06
  • 2020-09-12
相关资源
最近更新 更多