Laravel api在邮递员中返回值,但在Vue js中返回空数组

Posted

技术标签:

【中文标题】Laravel api在邮递员中返回值,但在Vue js中返回空数组【英文标题】:Laravel api returns value in postman but returns empty array in 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 【参考方案1】:

假设this.$http 是Axiosthis.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 标头。

以上是关于Laravel api在邮递员中返回值,但在Vue js中返回空数组的主要内容,如果未能解决你的问题,请参考以下文章

API 的 Auth0 访问令牌在邮递员中有效,但在从 Vue 调用时无效

Laravel Passport 和 Angular 在 api/login 路线上给了我未经授权但在邮递员上工作正常?

获取 api post call 在 React js 中返回 403 禁止错误,但在邮递员中使用相同的 URL

API POST 请求在邮递员和 Laravel 上返回 404 NOT FOUND PAGE

Laravel/000webhost/邮递员。无法得到任何回应

PHP POST api 在邮递员中工作,但在颤振应用程序中不工作