Я не могу заставить работать свой 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() . '}';
}
});
Измените сопоставление таблицы базы данных на 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"));
решить проблему.
вы пробовали return $response->withJson($dates)?
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 "}}






Чтобы вернуть json, попробуйте заменить
echo json_encode($dates);
С участием
return $response->withJson($dates);
Как предложил мим в комментарии.
не могли бы вы добавить выходы
var_dump($dates)?