私は趣味のプロジェクトとしてiPhoneアプリを書いていますが、データを提供するWebサービスが必要になります。仕事でやっていることとそれほど違いはありませんが、仕事で使うのはビューとコントローラーだけです。モデルの作成は他の誰かが担当し、通常はクライアントがWebサービスを提供します。
誰もがMySQLとPHPを使用していたときにWebプログラミングをしたことがあるので、私のスキルは少し時代遅れですが、すでに知っているテクニックを使用してそれを引き出すことができると確信しています。ただし、時代遅れのツールを使用して時間を無駄にしたくありません。最先端技術はREST APIを記述することになると考えました。モデルを定義するとすぐに、CRUD機能を備えたREST APIを提供するかなり良いフレームワークがあるはずだと考えていました。
私の質問は、REST APIを起動して実行するための最速の方法は何でしょうか?私は本当に、iPhoneアプリの作成に集中し、このAPIにあまり時間をかけたくないのです。ウェブ管理と改訂履歴も入手できれば素晴らしいと思います。また、APIはパブリックであるとは想定されていないため、認証のサポートも素晴らしいと付け加えます。
ただ明確にします。私はPHPフレームワークを気にしません。実際、現在のホスティングがそれをサポートしていることを知っているので、それはおそらくより良いかもしれません。
あなたに知らせるために:
私はRuby on Railsを使用しました。
EDIT:この答えは、Ruby on Railsまた、REST APIを記述する方法に関する指示もありません。私はあなたに私の動機といくつかの簡単な指示を与えると思いました。
Ruby on Rails=についての本を読み始めたところ、足場を使用するだけで、JSON REST APIは無料です。
始めるための良いガイドは次のとおりです。 http://guides.rubyonrails.org/getting_started.html
Ruby on Rails環境が稼働している場合、REST APIを実行するのは難しくありません:
$ Rails generate scaffold Post name:string title:string content:text
(上記のリンクの例。)Railsは非常に簡単で、 herok に自由に展開できるため、料金を支払う必要はありませんでした。 REST API。非常に基本的でトラフィックの少ないAPIをホストしています。Ruby on Railsで作業することを非常に喜んでいる他の多くの理由がありますこの質問のコンテキスト。
編集:
以下のリンクは明らかに3年間有効でしたが、機能しなくなったため、しばらくの間使用し続けると思われる新しいチュートリアルをいくつか見つけました。これらは非常に尊敬されているios開発チュートリアルサイトであるRay Wenderlichサイトにあります。最初の記事は実際に以下の壊れたリンクを参照していますが、それ自体で完全です:
iOSアプリ用のシンプルなPHP/MySQL Webサービスの作成方法
2つ目は少しひねりがあります。バックエンドとAFNetworkingでparse.comを使用しました。どちらも非常に優れています。
帰り道で記事を見つけることで、以下の壊れたリンクを修正しました。人々はリンクが好きなようですので、私はそれらを維持します。上記のリンクは、より多くの思考の糧を提供するはずです。
IPhoneアプリでもまったく同じことをしています。 PHPでRESTful APIを構築することに関する次の記事を見つけました。
また、次の記事もあります。
記事の下部にあるソースコードへのリンク。
PHPでRESTful APIを作成するための非常に簡単なチュートリアルに従いました。
Corey Maynard-PHPを使用したRESTful APIの作成
主なコンセプトは次のとおりです。
私はREST APIを ZEND Framework でプログラミングしました。使用したiPhoneでZend_Rest_Controllerを使用しました ASIHTTPRequest 。最初はZENDをセットアップしてmySQLに接続するのに苦労しましたが、それを行う方法を理解すると、APIを非常に迅速に記述できました。さらに質問がある場合は、詳細を共有できます。
編集:_Zend_Rest_Controller
_に関する公式ドキュメントはないようです。 このリンク は、それを使用してAPIを作成する方法を説明しています。サブクラスのinit()
でレンダリングを無効にし、各REST=呼び出しに対してメソッドを実装する必要があります。
Pythonはどうですか?
Python、DjangoおよびPistonを使用します。
PythonまたはDjango=でこのソリューションを開発するのに1日かかるでしょう。すべてのコードはユニットテストされ、 動作確認済み 。
PHPを使用したい場合は、Code IgniterフレームワークをPhil SturgeonのRESTサーバーで使用することをお勧めします。
http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2
以下をチェックしてくださいPHP MVCに続くクラス。 http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html
お役に立てれば。
別のオプションは、超軽量の永続化フレームワークであるrestSQLです。 http://restsql.org を参照してください。 MySQLとPostgreSQLをサポートし、標準のJava EEコンテナーで実行されます。 Apache Tomcat。
restSQLは非常に型破りなデータアクセス層です。 restSQLは、データベースのオブジェクト指向ビューではありません。リレーショナルデータベーステーブルのフラットまたは階層的な「ビュー」を提供します。これらのビューは、簡単なRESTベースのHTTPまたはJava APIを介してクエリ可能で更新可能です。 HTTPインターフェースはREST原理に基づいており、HTTPの組み込み機能を抽象化するのではなく、それらを使用します。
「CRUD機能を備えたREST API」が必要であり、それがrestSQLのスイートスポットです。コードなしでこれを行うことができます。 XMLファイルを介してSQLリソースを定義し、完全なCRUD機能を使用してそれらに対してHTTP呼び出しを開始するだけです。
Webサービスには使いやすい言語を使用する必要があります。リクエストに対するREST応答を定式化できる言語であれば問題ありません。
ただし、何かをすばやく実行したい場合は、Google App EngineでPythonを使用することをお勧めします。無料で、必要に応じてJavaの代わりにPythonを使用できます。 App EngineはOpenIDやGoogleアカウントを使用した認証をサポートしています(相互に排他的かどうかはわかりません)。
IOSデバイスでリクエストを行う限り、 ASIHTTPRequest を使用することをお勧めします。
PHPを既に知っている場合、PHP/MySQLバックエンドに問題はありません。 iPhone互換のplist xml形式ですべての応答を送信し、この短いコードスニペットを使用して、応答を即座にNSDictionary/NSArray/NSNumberデータ構造に変換できます。
NSString *response = [request responseString];
NSData* plistData = [response dataUsingEncoding:NSUTF8StringEncoding];
NSPropertyListFormat format;
NSString *errorStr;
NSDictionary* plist = [NSPropertyListSerialization propertyListFromData:plistData
mutabilityOption:NSPropertyListImmutable
format:&format
errorDescription:&errorStr];
また、URLの形成、非同期要求の送信、および応答の受信にもASIHTTPパッケージを使用しています。これを強くお勧めします。