успокоительный API не возвращает данные - PullRequest
0 голосов
/ 30 августа 2018

Я создаю API с тонким каркасом, но он не возвращает данные, но я получаю 200 статус.

$app->run();

$app->post('/blog', 'AddBlogPost'); 

function AddBlogPost()
  {
    $request = \Slim\Slim::getInstance()->request();
    $data = json_decode($request->getBody());
    $id = $data->id;
    $title = $data->title;
    $content = $data->content;
    $date = $data->date;
    $category = $data->category;

    $query = "INSERT INTO blog ('id','title','content','date','category') 
    VALUES (:id,:title,:content,:date,:category)"; 

    try{
        $db = getDB();
        $stmt = $db->prepare($query);
        $stmt->bindParam("title", $title, PDO::PARAM_STR);
        $stmt->bindParam("content", $content, PDO::PARAM_STR);
        $stmt->bindParam("date", $date, PDO::PARAM_STR);
        $stmt->bindParam("category", $category, PDO::PARAM_STR);
        $stmt->execute();
        $db = null;

        echo '{"success":{"status":"post added"}}';

    }catch(PDOException $e) {
        echo '{"error":{"text":'. $e->getMessage() .'}}';
  }
  }

1 Ответ

0 голосов
/ 30 августа 2018

При использовании Slim Framework вы не должны использовать echo, вы должны возвращать ответ PSR-7. Slim передает объект ответа в обратный вызов в качестве второго аргумента. Он также предоставляет несколько помощников для создания JSON.

function AddBlogPost(Request $request, Response $response) {
    ...
    try {
        ...

        return $response->withJson(['success' => ['status' => 'post added']]);

    }
    catch (PDOException $e) {
        return $response->withJson(['error' => ['text' => $e->getMessage()]]);
    }
}
...