REST APIの書き方は?


82

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

みんながMySQLとPHPを使っていた頃、私は以前にいくつかのWebプログラミングを行ったことがあるので、私のスキルは少し時代遅れですが、私はすでに知っているテクニックを使ってそれを引き出すことができると確信しています。ただし、廃止されたツールを使用して時間を無駄にしたくありません。最先端の技術はRESTAPIを作成することだと私は考えました。モデルを定義するとすぐに、CRUD機能を備えたRESTAPIを提供するだけの非常に優れたフレームワークがいくつかあるはずだと思っていました。

私の質問は、REST APIを起動して実行するための最速の方法は何でしょうか?私は本当にiPhoneアプリの作成に集中し、このAPIにあまり時間をかけたくないのです。Web管理や改訂履歴も入手できたら嬉しいです。また、APIは公開されていないはずなので、認証のサポートも素晴らしいでしょう。

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


1
RESTはおそらくあなたが本当に望んでいるものではありません:medium.com/@trevorhreed/…–
Trevor

2
私が書いたこの66行のPHPスクリプトを使用できます。
mevdschee 2017

5年後に回答8
JustOnUnderMillions 2017

回答:


42

編集:

どうやら3年間は良かったと思われる以下のリンクが機能しなくなったので、私は行って、しばらくの間続くと思う新しいチュートリアルをいくつか見つけました。これらは、非常に尊敬されているiosdevチュートリアルサイトであるRayWenderlichサイトにあります。最初の記事は実際には以下の壊れたリンクを参照していますが、それ自体で完全です。

iOSアプリ用のシンプルなPHP / MySQLWebサービスを作成する方法

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

Core DataをWebサービスと同期する方法–パート1


ウェイバックマシンで記事を見つけることにより、以下の壊れたリンクを修正しました。人々はリンクを気に入っているようですので、私はそれらを保持します。上記のリンクは、より多くの思考の糧を提供するはずです。


私は自分のiPhoneアプリでまったく同じことをしています。PHPでのRESTfulAPIの構築に関する次の記事を見つけました。

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/

記事の下部にソースコードへのリンクがあります。


2
これらのリンクは、現在タイムアウトしているようです。それが他の誰かのために起こっているのかどうかはわかりません。:/
Augie Gardner

8

Zend_Rest_Controllerを使用してZENDFrameworkRESTAPIをプログラムしましたが、iPhoneではASIHTTPRequestを使用しました。両方での私の経験は良いところです。最初は、ZENDの設定とmySQLへの接続に問題がありましたが、その方法を理解すると、APIを非常に迅速に作成することができました。ご不明な点がございましたら、詳細をお知らせいたします。

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


ZendサイトにZEND_Rest_Controllerが表示されません。ZEND_Rest_Serverが表示されます。これはあなたが話しているものですか?
dmitri

2
zend_rest_controllerの使用方法の良いスタートについては、こちらをご覧ください:techchorus.net/create-restful-applications-using-zend-framework。このクラスでは、REST APIの作成は簡単です
Philipp

これは多かれ少なかれ私が必要としているもののようです。私はそれを試してみます、そして私が成功したならば、私はこれを私の答えとして受け入れます。ありがとう。
エリックB

4
彼は成功しなかったと思います...:D
user151841 2012年

8

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

最終的にRubyonRailsを使用しました。

編集:この回答は、Ruby on Railsを選択した理由を提供せず、REST APIを使用してREST APIを作成する方法についても説明していないため、反対票を投じられたため、私の動機といくつかの簡単な説明を提供すると思いました。

Ruby on Railsに関する本を読み始めたところ、足場を使用するだけで、JSON RESTAPIを無料で入手できることに気付きました。

始めるための良いガイドは次のとおりです:http//guides.rubyonrails.org/getting_started.html

Ruby on Rails環境を稼働させている場合、RESTAPIの作成は実行するよりも難しくありません。

$ rails generate scaffold Post name:string title:string content:text

(上記のリンクの例。)また、Railsは非常に簡単で、herokuに無料でデプロイできることがわかりました。つまり、非常に基本的な低トラフィックのRESTAPIのホスティングにお金を払う必要がありませんでした。Ruby on Railsを使って仕事をすることにとても満足している理由は他にもたくさんありますが、それはこの質問の文脈を超えています。


10
自分自身に答えを与え、それからそれにチェックマークの悪い形の人を与える非常に悪い形。
thenetimp 2012年

29
@thenetimpあなた自身の質問に答えることについて悪いことは何もありません。実際、それが正解であり、他の誰からも与えられていない限り、それは奨励されています。あなたはあなた自身の答えを受け入れることに対して何の代表も得られないので、私はあなたがそれに対して何を持っている可能性があるのか​​本当にわかりません。
Erik B

3
あなたがそれを選ぶ理由を与えたほうがいいでしょう
mustafa 2013

4
@Nate REST APIを作成したい人には、Ruby on Railsをお勧めします。そのため、回答を削除しません。しかし、私はあなたのフィードバックを読み、私の答えを更新しました。私はそれがあなたを喜ばせることを願っています。
Erik B

2
@DennisKrøger質問が「RESTAPIの書き方」の場合 次に、「RoRを使用しました。これが彼らの足場を始めるためのガイドです」は完全に正しい答えです。
Mattygabe 2015年

8

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

CoreyMaynard-PHPを使用したRESTfulAPIの作成

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

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

3

Pythonはどうですか?

Python、Django、Pistonを使用します。

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

PythonやDjangoの経験がない場合、このソリューションの開発にはおそらく1日かかり、すべてのコードは単体テストされ、動作することが証明されています。



1

MVCに続く次のPHPクラスをチェックアウトします。 http://www.phpclasses.org/package/5080-PHP-Implement-REST-Web-services-servers.html

お役に立てれば。


7
phpclasses.orgの何かを使用することは強くお勧めしません。そのサイトの多くのクラスは、テストされておらず、安全ではなく、スクリプトキディによって書かれています。PEARやZendのようなもっと評判の良い場所を見てください
Dmitri

13
3000人を超えるPHP開発者がPHPClassesサイトにパッケージを提出しました。いくつかは他よりもはるかに有能です。多くはPEARとZendの寄稿者でもあります。テストされておらず安全でないと言うパッケージを見つけたという理由だけで、そのサイトで配布されているパッケージを使用しないように人々に伝えることは、純粋な偏見です。@srcが推奨するパッケージは、たまたま最高評価のパッケージです。それがサイトで配布されているという理由だけですべてに対して一般化することを決定する前に、パッケージコードまたは少なくともユーザーの評価を見た方が賢明だったでしょう。
mlemos 2011年

0

すでにPHPを知っている場合は、PHP / MySQLバックエンドに問題はありません。すべての応答をiPhone互換のplistxml形式で送信し、次の短いコードスニペットを使用して、応答を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

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

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

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


0

もう1つのオプションは、超軽量の永続フレームワークであるrestSQLです。http://restsql.orgを参照してください。MySQLとPostgreSQLをサポートし、ApacheTomcatなどの標準のJavaEEコンテナで実行されます。

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.