web-dev-qa-db-ja.com

REST API?

私は趣味のプロジェクトとしてiPhoneアプリを書いていますが、データを提供するWebサービスが必要になります。仕事でやっていることとそれほど違いはありませんが、仕事で使うのはビューとコントローラーだけです。モデルの作成は他の誰かが担当し、通常はクライアントがWebサービスを提供します。

誰もがMySQLとPHPを使用していたときにWebプログラミングをしたことがあるので、私のスキルは少し時代遅れですが、すでに知っているテクニックを使用してそれを引き出すことができると確信しています。ただし、時代遅れのツールを使用して時間を無駄にしたくありません。最先端技術はREST AP​​Iを記述することになると考えました。モデルを定義するとすぐに、CRUD機能を備えたREST AP​​Iを提供するかなり良いフレームワークがあるはずだと考えていました。

私の質問は、REST AP​​Iを起動して実行するための最速の方法は何でしょうか?私は本当に、iPhoneアプリの作成に集中し、このAPIにあまり時間をかけたくないのです。ウェブ管理と改訂履歴も入手できれば素晴らしいと思います。また、APIはパブリックであるとは想定されていないため、認証のサポートも素晴らしいと付け加えます。

ただ明確にします。私はPHPフレームワークを気にしません。実際、現在のホスティングがそれをサポートしていることを知っているので、それはおそらくより良いかもしれません。

82
Erik B

あなたに知らせるために:

私は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で作業することを非常に喜んでいる他の多くの理由がありますこの質問のコンテキスト。

8
Erik B

編集:

以下のリンクは明らかに3年間有効でしたが、機能しなくなったため、しばらくの間使用し続けると思われる新しいチュートリアルをいくつか見つけました。これらは非常に尊敬されているios開発チュートリアルサイトであるRay Wenderlichサイトにあります。最初の記事は実際に以下の壊れたリンクを参照していますが、それ自体で完全です:

iOSアプリ用のシンプルなPHP/MySQL Webサービスの作成方法

2つ目は少しひねりがあります。バックエンドとAFNetworkingでparse.comを使用しました。どちらも非常に優れています。

コアデータとWebサービスを同期する方法–パート1


帰り道で記事を見つけることで、以下の壊れたリンクを修正しました。人々はリンクが好きなようですので、私はそれらを維持します。上記のリンクは、より多くの思考の糧を提供するはずです。


IPhoneアプリでもまったく同じことをしています。 PHPでRESTful APIを構築することに関する次の記事を見つけました。

https://web.archive.org/web/20130910164802/http://www.gen-x-design.com/archives/create-a-rest-api-with-php/

また、次の記事もあります。

https://web.archive.org/web/20130323001500/http://www.gen-x-design.com/archives/making-restful-requests-in-php/

記事の下部にあるソースコードへのリンク。

42
nickfox

PHPでRESTful APIを作成するための非常に簡単なチュートリアルに従いました。

Corey Maynard-PHPを使用したRESTful APIの作成

主なコンセプトは次のとおりです。

  • uRIの解析と応答を返す1つの抽象クラス、および
  • aPIのエンドポイントのみで構成される1つの具象クラス。
8
jim_kastrin

私はREST APIを ZEND Framework でプログラミングしました。使用したiPhoneでZend_Rest_Controllerを使用しました ASIHTTPRequest 。最初はZENDをセットアップしてmySQLに接続するのに苦労しましたが、それを行う方法を理解すると、APIを非常に迅速に記述できました。さらに質問がある場合は、詳細を共有できます。

編集:_Zend_Rest_Controller_に関する公式ドキュメントはないようです。 このリンク は、それを使用してAPIを作成する方法を説明しています。サブクラスのinit()でレンダリングを無効にし、各REST=呼び出しに対してメソッドを実装する必要があります。

8
Philipp Flenker

Pythonはどうですか?

Python、DjangoおよびPistonを使用します。

  1. inspectdb を使用して、既存のDBからDjangoモデルを生成します。
  2. Django admin をモデルに追加します。
  3. Django Piston をアプリに追加します。
  4. 利益。

PythonまたはDjango=でこのソリューションを開発するのに1日かかるでしょう。すべてのコードはユニットテストされ、 動作確認済み

3
igorgue

PHPを使用したい場合は、Code IgniterフレームワークをPhil SturgeonのRESTサーバーで使用することをお勧めします。

http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2

https://github.com/philsturgeon/codeigniter-restserver

2
adamkrell

以下をチェックしてくださいPHP MVCに続くクラス。 http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html

お役に立てれば。

1
shauvik

別のオプションは、超軽量の永続化フレームワークであるrestSQLです。 http://restsql.org を参照してください。 MySQLとPostgreSQLをサポートし、標準のJava EEコンテナーで実行されます。 Apache Tomcat。

restSQLは非常に型破りなデータアクセス層です。 restSQLは、データベースのオブジェクト指向ビューではありません。リレーショナルデータベーステーブルのフラットまたは階層的な「ビュー」を提供します。これらのビューは、簡単なRESTベースのHTTPまたはJava AP​​Iを介してクエリ可能で更新可能です。 HTTPインターフェースはREST原理に基づいており、HTTPの組み込み機能を抽象化するのではなく、それらを使用します。

「CRUD機能を備えたREST API」が必要であり、それがrestSQLのスイートスポットです。コードなしでこれを行うことができます。 XMLファイルを介してSQLリソースを定義し、完全なCRUD機能を使用してそれらに対してHTTP呼び出しを開始するだけです。

0
Mark Sawers

Webサービスには使いやすい言語を使用する必要があります。リクエストに対するREST応答を定式化できる言語であれば問題ありません。

ただし、何かをすばやく実行したい場合は、Google App EngineでPythonを使用することをお勧めします。無料で、必要に応じてJavaの代わりにPythonを使用できます。 App EngineはOpenIDやGoogleアカウントを使用した認証をサポートしています(相互に排他的かどうかはわかりません)。

IOSデバイスでリクエストを行う限り、 ASIHTTPRequest を使用することをお勧めします。

0
Moshe

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パッケージを使用しています。これを強くお勧めします。

http://allseeing-i.com/ASIHTTPRequest/

0
Bogatyr