laravel - postman 返回 HTML 而不是 JSON?

标签 laravel api postman

尝试在 postman 上模拟 POST 请求以获取 API 的回调函数。它来自将数据发布给我的外部 API,因此我没有在回调函数中包含 return。

这是我的路线:

Route::post('api-callback','APIController@callback')->name('api-callback');

Controller :

 public function callback(Request $request){
        Log::info('callback function is called');
        $response = request()->all();
        Log::info($response);

        if($request->status == 1){

        //store transaction details
        $transaction = new Transaction();
        $transaction->user_id = auth()->id();
        $transaction->billcode = $request->billcode;
        $transaction->transaction_id = $request->refno;
        $transaction->amount = $request->amount;
        $transaction->save();

        //update new credit balance for user
        $user_credit = UserInfo::where('user_id',auth()->id());
        $user_credit->credit += $request->amount;
        $user_credit->save();

        }

预期结果是返回1(成功)。几天前我测试了它,它按预期工作,但今天我再次尝试它,它返回了我的 HTML 文本,没有错误。状态也是200。截图仅供引用。

我应该如何调试这个?

最佳答案

默认情况下,Laravel 返回 html 格式的响应 - 对于 json - 客户端必须设置 Header Accept:application/json

我创建了中间件来解决这个问题 - 因为在我看来,如果您仅支持 json 模式,api 在所有情况下都必须返回 json。

应用程序/Http/Middleware/ForceJsonResponse.php

<?php

namespace App\Http\Middleware;

use Closure;

class ForceJsonResponse
{
    public function handle($request, Closure $next)
    {
        $request->headers->set('Accept', 'application/json');
        return $next($request);
    }
}

应用程序/Http/Kernel.php

...
protected $routeMiddleware = [
    //other middlewares
    'json' => \App\Http\Middleware\ForceJsonResponse::class,
];
...
protected $middlewareGroups = [
    'api' => [
        //other middlewares
        'json'
    ],
];
...

关于laravel - postman 返回 HTML 而不是 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68408513/

相关文章:

google-chrome - 如何使用 postman 拦截器

php - Laravel Menu 自递归

laravel - 如何在 Laravel 中使用左连接限制 1?

javascript - REST API azure 语音转文本(已识别 : Text=undefined)

.net - 是否可以获取WPF Popup控件的Hwnd?

python - 如何在没有页面指示的情况下迭代 API 查询中的页面?

java - 通过 postman 发布到现有对象

php - 解析_str() : Calling parse_str() without the result argument is deprecated in jwage/purl

laravel - 从 url 获取 id 并在 laravel 5 中传递到表单

curl - 如何将 cURL 命令导入 POSTMAN