Как вернуть первый элемент json с помощью API Laravel?

Об этом коде определите конечную точку API, чтобы получить подробную информацию о публикации:

/ posts / {post}

 public function show($post)
 {
     return DB::table('posts')->where('id', $post)->get()->map(function($s){
         $s->type = __(Post::TEXT[$s->type]);
         return $s;
     });
 }

Он возвращает json следующим образом:

[
  {
    "id": 1,
    "name": "Test"
  }
]

Хотите вернуть такие данные:

{
  "id": 1,
  "name": "Test"
}

Итак, в конец метода добавлен ->first():

 public function show($post)
 {
     return DB::table('posts')->where('id', $post)->get()->map(function($s){
         $s->type = __(Post::TEXT[$s->type]);
         return $s;
     })->first();
 }

Но есть ошибка:

(1/1) UnexpectedValueException
The Response content must be a string or object implementing __toString(), "object" given.

Как сделать?

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
118
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете вместо того, чтобы возвращать только результат функции карты, вы можете преобразовать его в такой объект: $result = DB::... return (object) $result;

Ответ принят как подходящий

Чтобы убедиться, что маршрут api правильно возвращает ответ json, используйте помощник ответ json. Это попытается проанализировать любые данные и добавить правильные заголовки.

public function show($post)
{
    $post = DB::table('posts')->where('id', $post)->get()->map(function ($s) {
        $s->type = __(Post::TEXT[$s->type]);
        return $s;
    })->first()

    return response()->json($post);
}

Другие вопросы по теме