Laravel 5.4 API不在Postman中返回JSON

时间:2017-07-21 15:13:15

标签: laravel api postman

我创建了一个新的Laravel 5.4项目,创建了模型'Recipe',迁移表'recipes'并将路由添加到'Api.php'。但是当在Postman中测试我的API时,我得到一个Html文件而不是获得一个Json文件。

以下是根据以下文件的代码:

API.php路由文件

<?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'];
}

迁移迁移并创建表'recipes'。

然后在邮递员中,我尝试向我的网址发送'get'请求:'recipeapi.dev/api/recipe',但获取HTML代码。

当我尝试向我的网址发送'发布'请求时,会发生同样的情况:'recipeapi.dev/api/recipe'。 OFC对于帖子请求我包括标题:'Content-Type''application / json'。仍然得到相同的HTML代码....

使用Homestead / vagrant进行laravel,如果我使用浏览器转到默认路线:'/'它将我带到欢迎的Laravel页面。

不知道我持续获取这些html代码的问题,而不是我控制器的Json数据。

以下是带有数据的邮递员的照片......

Get request with Postman

Post request with Postman

任何人都知道发生了什么事?为什么我的get和post请求中没有从我的api获取Json数据?

谢谢大家!

5 个答案:

答案 0 :(得分:1)

看起来它甚至找不到路线。

请用此替换您的api.php文件,然后重试GET请求:

<?php

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

答案 1 :(得分:0)

测试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;
    }
}

答案 2 :(得分:0)

返回的http状态为404.

响应正文似乎是一个HTML页面(404错误页面?)

服务器无法识别该URL。

我会检查以确保您使用的是正确的网址。

答案 3 :(得分:0)

感谢您的帮助!你们非常友好地从繁忙的日程中抽出时间。

我终于解决了这个问题。我觉得现在很傻。我只是做了一个流浪汉的命令&#39;流浪儿条款&#39;在宅基地目录中,因为我使用的是Homestead,而且一切正常。

我似乎不时会遇到这个问题,特别是当我创建授权时#39; php artisan make:auth&#39; ,之后我将不得不制作一个vagrant provision命令以便登录,注册部分ect ..授权显示在网页上。

不知道这个问题的原因是什么,但问题已经解决了。

再次感谢大家!欣赏它!

答案 4 :(得分:0)

我有同样的问题。

您应该将这两个标头添加到您的请求中:

Accept: application/json

Content-type: application/json