Unity에서 FuelPHP로 만든 WebAPI에 액세스

12833 단어 FuelPHPUnity

개요



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.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에 출력되면 성공

좋은 웹페이지 즐겨찾기