7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TreeFrogでJSONデータを返す

Last updated at Posted at 2014-06-26

TreeFrog で作ったWebアプリから、REST なインターフェースで JSON データを返す。
まずは1件だけ返すことに絞ります。

  • ちなみに TreeFrog Framework は C++ の Web フレームワークです

要件として、Qt は バージョン5.0 以上。

あらかじめ、アプリのプロジェクトは作っておいて下さい。例えば、コマンドラインからこんな感じ。

$ tspawn new booksite
$ cd booksite

MySQLデータベースにテーブルを作ります。この例は、「本」の情報を保存するテーブルだと思ってください。本のタイトル、出版社、ISBNのフィールドがあります。

mysql
mysql> CREATE DATABASE bookdb;
mysql> CREATE TABLE book (id INTEGER AUTO_INCREMENT PRIMARY KEY, title VARCHAR(20), pages INTEGER, isbn VARCHAR(20), publisher VARCHAR(50), created_at TIMESTAMP, updated_at TIMESTAMP) DEFAULT CHARSET=utf8;

config/database.ini を編集して、データベース情報を記述します。

編集が終わったら、このテーブルに対する足場をつくります。

$ tspawn s book
DriverType:   QMYSQL
DatabaseName: bookdb
HostName:     
Database opened successfully
  created   models/sqlobjects/bookobject.h
  created   models/book.h
  created   models/book.cpp
  updated   models/models.pro
  created   controllers/bookcontroller.h
  :

アクションを宣言します。引数にはIDを渡すことにします。

bookcontroller.h
void json(const QString &pk);

実装を書きましょう。

bookcontroller.cpp
void BookController::json(const QString &pk)
{
    Book book = Book::get(pk.toInt());
    QVariantMap jsonBook = book.toVariantMap();
    renderJson(jsonBook);
}

ビルドして、APサーバを起動。

 $ qmake -r
 $ make
 $ treefrog -e dev

1件以上データを保存した状態で、http://(hostname):8800/Book/json/1 にアクセス。

{"createdAt": "2014-06-26T14:34:20","id": 2,"isbn": "B00IAXXXXX","pages": 200,"publisher": "イディ","title": "TreeFrog Framework入門","updatedAt": "2014-06-26T14:34:20"}

レコードの情報がJSONとして表現されます。
もし返したくない情報(フィールド)があれば QVariantMap オブジェクトから取り除き、renderJson()を呼べば良いです。

 
CURDなアクションを実装し、ルーティングを定義すれば、RESTful な実装が可能です。
 

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?