Запрос PHP REST API, возвращающий пустое тело

Я не могу заставить работать свой PHP Rest API, он просто возвращает пустое тело при успешном HTTP-запросе (200).

Когда я просто повторяю что-то, он возвращает это нормально. Я использую Slim (микро-фреймворк PHP), MySQL, apache. Таблица базы данных создается в phpmyadmin.

index.php

<?php

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require '../vendor/autoload.php';
require '../src/config/db.php';

$app = new \Slim\App;
$app->get('/hello/{name}', function (Request $request, Response $response) {
    $name = $request->getAttribute('name');
    $response->getBody()->write("Hello, $name");

    return $response;
});

// Customer Routes
require '../src/routes/dates.php';

$app->run();

db.php он также содержит dbhost, dbuser, dbpass и dbname переменные выше

<?php
class db
{
    // Properties
    var $dbhost = 'localhost';
    var $dbuser = 'root';
    var $dbpass = 'parool1';
    var $dbname = 'slimapp';

    // Connect
    public function connect()
    {
        $mysql_connect_str = "mysql:host=$this->dbhost;dbname=$this->dbname";
        $dbConnection = new PDO($mysql_connect_str, $this->dbuser, $this->dbpass);
        $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $dbConnection;
    }
}

date.php

<?php

use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

$app = new \Slim\App;

// Get All Calendar Dates
$app->get('/api/date', function (Request $request, Response $response) {
    $sql = "SELECT * FROM `calendardates`";

    try {
        // Get DB Object
        $db = new db();
        // Connect
        $db = $db->connect();

        $stmt = $db->query($sql);
        $dates = $stmt->fetchAll(PDO::FETCH_OBJ);
        $db = null;
        echo json_encode($dates);
    } catch (PDOException $e) {
        echo '{"error": {"text": ' . $e->getMessage() . '}';
    }
});

Запрос PHP REST API, возвращающий пустое телоЗапрос PHP REST API, возвращающий пустое телоРешение:

Измените сопоставление таблицы базы данных на utf8 (если вы хотите использовать символы типа «ö, ä, ü» в таблице базы данных).

Я изменился

$dbConnection = new PDO($mysql_connect_str, $this->dbuser, $this->dbpass);

к

$dbConnection = new PDO($mysql_connect_str, $this->dbuser, $this->dbpass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

решить проблему.

не могли бы вы добавить выходы var_dump($dates)?

qskane 27.04.2018 11:53

вы пробовали return $response->withJson($dates)?

mim. 27.04.2018 12:16

var_dump ($ates) возвращает: array (2) {[0] => object (stdClass) # 65 (3) {["id"] => string (1) "1" ["date_title"] => string ( 9) "Nuudip�ev" ["date_date"] => строка (10) "1515283200"} [1] => объект (stdClass) # 66 (3) {["id"] => строка (1) "2 "[" date_title "] => строка (13)" Taliharjap�ev "[" date_date "] => строка (10)" 1515888000 "}}

user8796786 27.04.2018 16:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
3
296
1

Ответы 1

Чтобы вернуть json, попробуйте заменить

echo json_encode($dates);

С участием

return $response->withJson($dates);

Как предложил мим в комментарии.

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