0

これは非常に一般的で自由な質問です。そのため、昨日、現在 Django で構築されている Web サイトに基づいて iOS アプリを作成することにしました。現在、Django は RoR と同様に、UI に対して透過的であると想定されています。ユーザーが使用している UI を気にする必要はありません。(適切な MVC)。

たとえば、コードの一部を見ると、システムに機器を追加する方法は次のとおりです。

 @login_required
 def add(request):
     r_user = request.user.userprofile
     form = EquipmentFormAdd(request.POST or None, c_id=r_user.company_id, error_class=DivErrorList)
     if form.is_valid():
        equipment = form.save(commit=False)
        equipment.company_id = r_user.company_id
        equipment.added_by_id = request.user.id
        default_file_path = EquipmentPicture.get_default_file_path()
        url_bucket = r_user.company.s3_bucket.name + default_file_path        
        cell = form.cleaned_data['cell']
        equipment.cell_order = cell.equipment_set.count() + 1
        equipment_picture = EquipmentPicture.objects.create(
            file=EquipmentPicture.get_default_file_path(),
            slug=EquipmentPicture.get_default_slug(), 
            bucket_name=r_user.company.s3_bucket.name,
            bucket=r_user.company.s3_bucket, added_by=request.user,
            company=r_user.company, url_with_bucket=url_bucket)                
        equipment.picture = equipment_picture
        equipment.save()
        return redirect('equipment_index')
   return render(request, 'equipment/add.html', {'equipment_form': form, 'company_id': r_user.company_id})

これを見ると、すぐにテンプレートをレンダリングしてデータを渡していることがわかります。これは iOS では機能しません。

いくつかの質問:

  1. 多くの人が REST API を作成しています。Django で HTTPResponses を作成できれば、それを行う意味がわかりません。TastyPie のようなものを使用する場合、現在のadd 関数を見ると、その関数内で多くのことが行われ、 TastyPie はそれを呼び出すことができません。

  2. 私の主な質問は、Web プラットフォームと iOS プラットフォームの両方で通常の Django サーバーと同様に REST API を実行する必要があるか、それとも同じ機能を備え、それに応じて異なるエントリ ポイントとレンダリングを使用する必要があるかということです。

  3. REST API はいつ作成しますか? データを作成および取得するときの関数の多くは、現在、標準の POST および GET 呼び出しだけでは機能しません。それは悪いことですか?

私はちょっと混乱しています...長い質問で申し訳ありませんが、もう一度感謝します!

4

1 に答える 1

1

REST API は、GET や POST と何ら変わりはありません。プレゼンテーションではなく、データに使用しているだけです。マークアップ コードの代わりに JSON または XML を出力します。次に、API コンシューマーは、必要なユーザー インターフェイスをデータに構築します。

REST API の真の目的は、別のカプセル化レイヤー (SOAP など) を発明する代わりに、HTTP が既に提供しているすべてのツールを活用することです。

たとえば、何らかのアクションの結果 (成功または失敗) を示すには、ステータス コードを使用します。実行するアクションを示すには、通常、動詞 (get、post、put、delete、head、options) を使用します。他のリクエストまたはレスポンスのメタデータは、適切な http ヘッダーに入れられます。

このようにして、データはよりシンプルになり、キャッシングはより簡単になり、統合はパイのように簡単になります。

また、優れた REST API を使用すると、JavaScript フレームワーク (backbonejs など) を使用して API から消費されるデータから UI を構築する Web サイトを構築することもできます。

アップデート

したがって、Django での REST の現在の状況と、API の作成と使用の経験があることを考えると、次のいずれかを構築するように伝えます。

  1. 可能であれば、Web サイトに使用するのと同じコントローラーを使用して、Web と一緒に RESTful API。同じ Web は実際には RESTful であり、唯一の違いは API ではないことです。私はいくつかのプロジェクトでいくつかのライブラリを使用して API を構築しようとしましたが、常に独自のコードを作成することになりました。その方が簡単な場合もあります。すべてのクライアント アプリケーション (iOS、Android など) は API を使用するため、API を完全に切り離すことができます。

    すべての API を自分で作成することに抵抗がある場合は、 pistonが Tastypie の有効な代替手段になる可能性があります。

  2. RESTful APIのみを使用し、クライアント側のテクノロジを使用してサイトを再構築します。あなたの (多数の) 顧客/ユーザーのブラウザーが同じ作業を行うことができ、電気代を支払わないのに、なぜ (少数の) サーバーを HTML の生成でビジー状態にしておく必要があるでしょうか?

いずれにせよ、RESTful API は、アプリケーションのデータ構造を整理するのに役立ちます。

于 2012-10-20T19:00:55.680 に答える