Laravel 5.4 API在Postman中不返回JSON

o2g1uqev  于 2023-06-05  发布在  Postman
关注(0)|答案(5)|浏览(332)

我已经创建了一个新的Laravel 5.4项目,创建了模型“食谱”,迁移表“食谱”并将路由添加到“Api.php”。但是当在Postman中测试我的API时,我得到的不是JSON响应,而是HTML文件。
以下是根据以下文件的代码:
API.php Routes文件

<?php

use Illuminate\Http\Request;

Route::post('/recipe', 'RecipeController@postRecipe')-
>name('get_recipe');
Route::get('/recipe', 'RecipeController@getRecipe')-
>name('post_recipe');

RecipeController

namespace App\Http\Controllers;

use App\Recipe;
use Illuminate\Http\Request;

class RecipeController extends Controller {

public function postRecipe(Request $request)
{
    $recipe = new Recipe();
    $recipe->content = $request->input('content');
    $recipe->save();
    return response()->json(['recipe' => $recipe], 201);
}

public function getRecipe()
{
    return response()->json(['message' => 'Got a Response'],200);
}

配方模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Recipe extends Model
{
protected $fillable = ['content'];
}

迁移已迁移,表“配方”已创建.
然后在postman中我尝试对我的URL进行' get '请求:'recipeapi.dev/api/recipe'但获取html代码。
当我尝试向我的URL发送“post”请求时,也会发生同样的情况:'recipeapi.dev/api/recipe'。发布请求的OFC包含标题:' Content-Type ' ' application/json '。仍然得到相同的html代码。。。
使用宅基地/vagrant for laravel,如果我使用浏览器转到默认路由:'/'它把我带到了欢迎的Laravel页面。
不知道是什么问题,我一直得到这些HTML代码,而不是JSON数据,根据我的控制器。
以下是 Postman 的照片与数据。。。
Get request with Postman
Post request with Postman
有人知道发生什么事了吗?为什么我没有从get和post请求的API中获取Json数据?
谢谢各位!

0s7z1bwu

0s7z1bwu1#

你只需要在请求中添加这两个头:

Accept: application/json

Content-type: application/json
vbopmzt1

vbopmzt12#

它看起来甚至找不到路线。
请将您的api.php文件替换为以下内容,然后重试GET请求:

<?php

Route::get('recipe', 'RecipeController@getRecipe')->name('get_recipe');
Route::post('recipe', 'RecipeController@postRecipe')->name('post_recipe');
m2xkgtsf

m2xkgtsf3#

在测试API时,您应该关闭Laravel Debugbar。或者,您可以为所有API路由关闭它。
以下是来自here的Laravel 5的解决方案:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\JsonResponse;

class ProfileJsonResponse
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        if (
            $response instanceof JsonResponse &&
            app()->bound('debugbar') &&
            app('debugbar')->isEnabled() &&
            is_object($response->getData())
        ) {
            $response->setData($response->getData(true) + [
                '_debugbar' => app('debugbar')->getData(),
            ]);
        }

        return $response;
    }
}
njthzxwz

njthzxwz4#

返回的HTTP状态为404。
404错误页面404错误页面404错误页面)
服务器无法识别URL。
请检查您是否使用了正确的URL。

bwleehnv

bwleehnv5#

谢谢你的帮助!你们在忙碌之中抽出时间真是太好了。
我终于解决了这个问题。我现在觉得很傻。我只需要在宅基地目录中执行一个vagrant命令' vagrant provision ',因为我正在使用Homestead,并且所有都在工作。
我似乎不时会遇到这个问题,特别是当我创建授权' php artisan make:auth '时,此后我将不得不制作一个流浪的规定命令,以便登录,注册部件等。在网页上出现的授权。
不知道这个问题的原因是什么,但问题解决了。
再次感谢各位!谢谢!

相关问题