Unity에서 FuelPHP로 만든 WebAPI에 액세스
개요
Unity에서 서버에있는 FuelPHP로 만든 WebAPI에 액세스하는 방법.
Apache나 PHP나 MySQL의 인스톨이나 설정이나 기동의 방법은 생략하고 있으므로, 그 근처의 지식이 있어 게다가 Unity의 기본 조작을 알 수 있는 사람용입니다.
MySQL의 유저, 패스워드 모두 root라고 가정해 설명하고 있습니다.
참고문헌
· #FuelPHP 5 분 안에 API를 구현하는 자습서 (스크린 캐스트 포함)
htp : // bg. 오모온. rg/20131219/925
· [Unity] [MiniJSON] JSON 데이터 로드
h tp // w w. 쵸데시 응 ぁ b. 이 m/2013/08/15/우니 ty-미니 j 그런-아아 d j
시험 환경
서버측
OS:Amazon Linux AMI release 2014.09
Apache:2.4.10
PHP:5.4.33
MySQL:5.5.40
FuelPHP:1.7.2
클라이언트측
OS:Windows 8.1
Unity:4.5.5f1
서버측
위에 실려있는 참고 문헌의 #FuelPHP 5 분 안에 API를 구현하는 튜토리얼 (스크린 캐스트 있음)을 거의 그대로 사용하겠습니다 ... 조금 바꾸고 있습니다 만, 참고 문헌을 들여다 보는 것이 이해하기 쉽다고 생각합니다 합니다.
DB 준비
$ echo 'create database fuel_dev' | mysql -u root -proot
(FuelPHP 설치시 기본적으로 development 환경에서 기본 DB 이름이 fuel_dev)
FuelPHP 설치
$ curl get.fuelphp.com/oil | sh
$ cd /var/www/html #ドキュメントルートへ
$ oil create api
내장 서버는 사용하지 않습니다.
http://(각자의 서버의 주소)/api/public에 액세스해 아래와 같은 페이지가 나오면 인스톨 완료
DB 설정
DB 연결을 위한 설정을 합니다. 가정대로라면 읽으십시오.
api/fuel/app/config/development/db.php<?php
/**
* The development database settings. These get merged with the global settings.
*/
return array(
'default' => array(
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=fuel_dev',//自分の環境に合わせて変更
'username' => 'root',//自分の環境に合わせて変更
'password' => 'root',//自分の環境に合わせて変更
),
),
);
무엇을 만들 것인가?
간단한 메모와 같은 것을 만듭니다.
http://(각자의 서버의 주소)/api/public/memo/write (POST 메소드로)
http://(각자의 서버의 주소)/api/public/memo/read (GET 메소드로, JSON을 돌려준다)
두 개의 URL을 준비하고 각각 메모를 게시하고 가져옵니다.
oil generate로 model 만들기
$ oil generate model memo memo:varchar created_at:timestamp updated_at:timestamp --mysql-timestamp --crud --created-at --updated-at
Creating model: /Users/omoon/Documents/api/fuel/app/classes/model/memo.php
Creating migration: /Users/omoon/Documents/api/fuel/app/migrations/001_create_memos.php
따라서 모델과 동시에 마이그레이션 파일도 생성됩니다.
그대로 oil r migrate 하여 테이블을 작성한다.
$oil r migrate
Performed migrations for app:default:
001_create_memos
여기서 오류가 발생하면 DB 연결에 실패했기 때문에 DB 설정을 참고로 잘못되었는지 확인
라우팅 설정
fuel/app/config/route.php//(省略)
'memo/read' => 'memo/read',
'memo/write' => 'memo/write',
);
위의 두 줄 추가.
oil generate로 controller 만들기
$ oil generate controller memo write read --extends=Controller_Rest
에서 View와 Controller가 자동 생성된다.
자동 생성된 컨트롤러를 다음과 같이 변경
fuel/app/classes/controller/memo.php<?php
class Controller_Memo extends Controller_Rest
{
protected $format = 'json';
public function get_read()
{
$memos = Model_Memo::find_all();
$this->response($memos);
}
public function post_write()
{
$memo = Input::post('memo');
Model_Memo::forge(['memo' => $memo])->save();
}
}
동작 확인
$ curl http://(各自のサーバーのアドレス)/api/public/memo/write -d "memo=test1"
$ curl http://(各自のサーバーのアドレス)/api/public/memo/write -d "memo=test2"
$ curl http://(各自のサーバーのアドレス)/api/public/memo/write -d "memo=test3"
http://(각자의 서버의 주소)/api/public/memo/read에 액세스 해 아래와 같은 JSON을 출력하고 있으면 성공
[{"id":"1","memo":"test1","created_at":"2014-10-27 13:27:56","updated_at":"2014-10-27 13:27:56"},{"id":"2","memo":"test2","created_at":"2014-10-27 13:28:03","updated_at":"2014-10-27 13:28:03"},{"id":"3","memo":"test3","created_at":"2014-10-27 05:45:01","updated_at":"2014-10-27 13:28:06"}]
이것으로 서버측은 끝입니다.
클라이언트측
miniJSON 사용 준비
이해하기 어려운 경우 참고 자료의 [Unity][MiniJSON]JSON 데이터 로드를 참조하십시오.
htps : // st. 기주 b. 코 m/다 rkk bぇ/1411710
1. 위 페이지의 "Download Gist"버튼을 눌러 압축 파일을 다운로드하고 파일을 압축 해제하고 디렉토리에서 "MiniJSON.cs"를 꺼냅니다.
2. Unity의 Project 윈도우의 Asset내에 「Plugins」라고 하는 디렉토리를 작성해, 이 디렉토리에 MiniJSON.cs를 카피한다.
이제 사용할 수 있어야합니다.
실제로 스크립트를 쓰고 쓰기 읽기를 시도합니다.
스크립트 작성
ReadWriteJSON.csusing UnityEngine;
using System.Collections;
using System.Collections.Generic;
using MiniJSON;
public class ReadWriteJSON : MonoBehaviour {
// Use this for initialization
void Start () {
StartCoroutine ("ReadMemo");
}
IEnumerator WriteMemo(){
string url1 = "http://(各自のサーバーのアドレス)/api/public/memo/write";
WWWForm wwwForm = new WWWForm();
//指定urlにデータを送信
wwwForm.AddField( "memo", "test4" );
WWW gettext = new WWW(url1,wwwForm);
yield return gettext;
}
IEnumerator ReadMemo(){
//WriteMemoを実行し終わるまで待つ
yield return StartCoroutine ("WriteMemo");
//URLからデータを取得
WWW www = new WWW("http://(各自のサーバーのアドレス)/api/public/memo/read");
yield return www;
//Null or empty ならブレイク
if(!string.IsNullOrEmpty(www.error)){
Debug.LogError(string.Format("Fail Whale!\n{0}", www.error));
yield break;
}
//データを代入し整形
string json = www.text;
IList memo = (IList)Json.Deserialize(json);
//テスト用にコンソールに書き出し
foreach(IDictionary memos in memo){
Debug.Log((string)memos["memo"]);
}
}
}
Create Empty에서 GameObject를 만들고 방금 만든 스크립트를 드래그 온 드롭하여 실행하고 다음과 같이 console에 출력되면 성공
Reference
이 문제에 관하여(Unity에서 FuelPHP로 만든 WebAPI에 액세스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mura2435/items/e9279be582fb1d74b9da
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
· #FuelPHP 5 분 안에 API를 구현하는 자습서 (스크린 캐스트 포함)
htp : // bg. 오모온. rg/20131219/925
· [Unity] [MiniJSON] JSON 데이터 로드
h tp // w w. 쵸데시 응 ぁ b. 이 m/2013/08/15/우니 ty-미니 j 그런-아아 d j
시험 환경
서버측
OS:Amazon Linux AMI release 2014.09
Apache:2.4.10
PHP:5.4.33
MySQL:5.5.40
FuelPHP:1.7.2
클라이언트측
OS:Windows 8.1
Unity:4.5.5f1
서버측
위에 실려있는 참고 문헌의 #FuelPHP 5 분 안에 API를 구현하는 튜토리얼 (스크린 캐스트 있음)을 거의 그대로 사용하겠습니다 ... 조금 바꾸고 있습니다 만, 참고 문헌을 들여다 보는 것이 이해하기 쉽다고 생각합니다 합니다.
DB 준비
$ echo 'create database fuel_dev' | mysql -u root -proot
(FuelPHP 설치시 기본적으로 development 환경에서 기본 DB 이름이 fuel_dev)
FuelPHP 설치
$ curl get.fuelphp.com/oil | sh
$ cd /var/www/html #ドキュメントルートへ
$ oil create api
내장 서버는 사용하지 않습니다.
http://(각자의 서버의 주소)/api/public에 액세스해 아래와 같은 페이지가 나오면 인스톨 완료
DB 설정
DB 연결을 위한 설정을 합니다. 가정대로라면 읽으십시오.
api/fuel/app/config/development/db.php<?php
/**
* The development database settings. These get merged with the global settings.
*/
return array(
'default' => array(
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=fuel_dev',//自分の環境に合わせて変更
'username' => 'root',//自分の環境に合わせて変更
'password' => 'root',//自分の環境に合わせて変更
),
),
);
무엇을 만들 것인가?
간단한 메모와 같은 것을 만듭니다.
http://(각자의 서버의 주소)/api/public/memo/write (POST 메소드로)
http://(각자의 서버의 주소)/api/public/memo/read (GET 메소드로, JSON을 돌려준다)
두 개의 URL을 준비하고 각각 메모를 게시하고 가져옵니다.
oil generate로 model 만들기
$ oil generate model memo memo:varchar created_at:timestamp updated_at:timestamp --mysql-timestamp --crud --created-at --updated-at
Creating model: /Users/omoon/Documents/api/fuel/app/classes/model/memo.php
Creating migration: /Users/omoon/Documents/api/fuel/app/migrations/001_create_memos.php
따라서 모델과 동시에 마이그레이션 파일도 생성됩니다.
그대로 oil r migrate 하여 테이블을 작성한다.
$oil r migrate
Performed migrations for app:default:
001_create_memos
여기서 오류가 발생하면 DB 연결에 실패했기 때문에 DB 설정을 참고로 잘못되었는지 확인
라우팅 설정
fuel/app/config/route.php//(省略)
'memo/read' => 'memo/read',
'memo/write' => 'memo/write',
);
위의 두 줄 추가.
oil generate로 controller 만들기
$ oil generate controller memo write read --extends=Controller_Rest
에서 View와 Controller가 자동 생성된다.
자동 생성된 컨트롤러를 다음과 같이 변경
fuel/app/classes/controller/memo.php<?php
class Controller_Memo extends Controller_Rest
{
protected $format = 'json';
public function get_read()
{
$memos = Model_Memo::find_all();
$this->response($memos);
}
public function post_write()
{
$memo = Input::post('memo');
Model_Memo::forge(['memo' => $memo])->save();
}
}
동작 확인
$ curl http://(各自のサーバーのアドレス)/api/public/memo/write -d "memo=test1"
$ curl http://(各自のサーバーのアドレス)/api/public/memo/write -d "memo=test2"
$ curl http://(各自のサーバーのアドレス)/api/public/memo/write -d "memo=test3"
http://(각자의 서버의 주소)/api/public/memo/read에 액세스 해 아래와 같은 JSON을 출력하고 있으면 성공
[{"id":"1","memo":"test1","created_at":"2014-10-27 13:27:56","updated_at":"2014-10-27 13:27:56"},{"id":"2","memo":"test2","created_at":"2014-10-27 13:28:03","updated_at":"2014-10-27 13:28:03"},{"id":"3","memo":"test3","created_at":"2014-10-27 05:45:01","updated_at":"2014-10-27 13:28:06"}]
이것으로 서버측은 끝입니다.
클라이언트측
miniJSON 사용 준비
이해하기 어려운 경우 참고 자료의 [Unity][MiniJSON]JSON 데이터 로드를 참조하십시오.
htps : // st. 기주 b. 코 m/다 rkk bぇ/1411710
1. 위 페이지의 "Download Gist"버튼을 눌러 압축 파일을 다운로드하고 파일을 압축 해제하고 디렉토리에서 "MiniJSON.cs"를 꺼냅니다.
2. Unity의 Project 윈도우의 Asset내에 「Plugins」라고 하는 디렉토리를 작성해, 이 디렉토리에 MiniJSON.cs를 카피한다.
이제 사용할 수 있어야합니다.
실제로 스크립트를 쓰고 쓰기 읽기를 시도합니다.
스크립트 작성
ReadWriteJSON.csusing UnityEngine;
using System.Collections;
using System.Collections.Generic;
using MiniJSON;
public class ReadWriteJSON : MonoBehaviour {
// Use this for initialization
void Start () {
StartCoroutine ("ReadMemo");
}
IEnumerator WriteMemo(){
string url1 = "http://(各自のサーバーのアドレス)/api/public/memo/write";
WWWForm wwwForm = new WWWForm();
//指定urlにデータを送信
wwwForm.AddField( "memo", "test4" );
WWW gettext = new WWW(url1,wwwForm);
yield return gettext;
}
IEnumerator ReadMemo(){
//WriteMemoを実行し終わるまで待つ
yield return StartCoroutine ("WriteMemo");
//URLからデータを取得
WWW www = new WWW("http://(各自のサーバーのアドレス)/api/public/memo/read");
yield return www;
//Null or empty ならブレイク
if(!string.IsNullOrEmpty(www.error)){
Debug.LogError(string.Format("Fail Whale!\n{0}", www.error));
yield break;
}
//データを代入し整形
string json = www.text;
IList memo = (IList)Json.Deserialize(json);
//テスト用にコンソールに書き出し
foreach(IDictionary memos in memo){
Debug.Log((string)memos["memo"]);
}
}
}
Create Empty에서 GameObject를 만들고 방금 만든 스크립트를 드래그 온 드롭하여 실행하고 다음과 같이 console에 출력되면 성공
Reference
이 문제에 관하여(Unity에서 FuelPHP로 만든 WebAPI에 액세스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mura2435/items/e9279be582fb1d74b9da
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ echo 'create database fuel_dev' | mysql -u root -proot
$ curl get.fuelphp.com/oil | sh
$ cd /var/www/html #ドキュメントルートへ
$ oil create api
<?php
/**
* The development database settings. These get merged with the global settings.
*/
return array(
'default' => array(
'connection' => array(
'dsn' => 'mysql:host=localhost;dbname=fuel_dev',//自分の環境に合わせて変更
'username' => 'root',//自分の環境に合わせて変更
'password' => 'root',//自分の環境に合わせて変更
),
),
);
$ oil generate model memo memo:varchar created_at:timestamp updated_at:timestamp --mysql-timestamp --crud --created-at --updated-at
Creating model: /Users/omoon/Documents/api/fuel/app/classes/model/memo.php
Creating migration: /Users/omoon/Documents/api/fuel/app/migrations/001_create_memos.php
$oil r migrate
Performed migrations for app:default:
001_create_memos
//(省略)
'memo/read' => 'memo/read',
'memo/write' => 'memo/write',
);
$ oil generate controller memo write read --extends=Controller_Rest
<?php
class Controller_Memo extends Controller_Rest
{
protected $format = 'json';
public function get_read()
{
$memos = Model_Memo::find_all();
$this->response($memos);
}
public function post_write()
{
$memo = Input::post('memo');
Model_Memo::forge(['memo' => $memo])->save();
}
}
$ curl http://(各自のサーバーのアドレス)/api/public/memo/write -d "memo=test1"
$ curl http://(各自のサーバーのアドレス)/api/public/memo/write -d "memo=test2"
$ curl http://(各自のサーバーのアドレス)/api/public/memo/write -d "memo=test3"
[{"id":"1","memo":"test1","created_at":"2014-10-27 13:27:56","updated_at":"2014-10-27 13:27:56"},{"id":"2","memo":"test2","created_at":"2014-10-27 13:28:03","updated_at":"2014-10-27 13:28:03"},{"id":"3","memo":"test3","created_at":"2014-10-27 05:45:01","updated_at":"2014-10-27 13:28:06"}]
miniJSON 사용 준비
이해하기 어려운 경우 참고 자료의 [Unity][MiniJSON]JSON 데이터 로드를 참조하십시오.
htps : // st. 기주 b. 코 m/다 rkk bぇ/1411710
1. 위 페이지의 "Download Gist"버튼을 눌러 압축 파일을 다운로드하고 파일을 압축 해제하고 디렉토리에서 "MiniJSON.cs"를 꺼냅니다.
2. Unity의 Project 윈도우의 Asset내에 「Plugins」라고 하는 디렉토리를 작성해, 이 디렉토리에 MiniJSON.cs를 카피한다.
이제 사용할 수 있어야합니다.
실제로 스크립트를 쓰고 쓰기 읽기를 시도합니다.
스크립트 작성
ReadWriteJSON.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using MiniJSON;
public class ReadWriteJSON : MonoBehaviour {
// Use this for initialization
void Start () {
StartCoroutine ("ReadMemo");
}
IEnumerator WriteMemo(){
string url1 = "http://(各自のサーバーのアドレス)/api/public/memo/write";
WWWForm wwwForm = new WWWForm();
//指定urlにデータを送信
wwwForm.AddField( "memo", "test4" );
WWW gettext = new WWW(url1,wwwForm);
yield return gettext;
}
IEnumerator ReadMemo(){
//WriteMemoを実行し終わるまで待つ
yield return StartCoroutine ("WriteMemo");
//URLからデータを取得
WWW www = new WWW("http://(各自のサーバーのアドレス)/api/public/memo/read");
yield return www;
//Null or empty ならブレイク
if(!string.IsNullOrEmpty(www.error)){
Debug.LogError(string.Format("Fail Whale!\n{0}", www.error));
yield break;
}
//データを代入し整形
string json = www.text;
IList memo = (IList)Json.Deserialize(json);
//テスト用にコンソールに書き出し
foreach(IDictionary memos in memo){
Debug.Log((string)memos["memo"]);
}
}
}
Create Empty에서 GameObject를 만들고 방금 만든 스크립트를 드래그 온 드롭하여 실행하고 다음과 같이 console에 출력되면 성공
Reference
이 문제에 관하여(Unity에서 FuelPHP로 만든 WebAPI에 액세스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mura2435/items/e9279be582fb1d74b9da텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)