1

Tastypie ベースの API 加算器を作成したいと思います。これがどのように機能するかです...ユーザーは追加したい2つの番号に投稿し、Tastypie + Djangoを使用して、ユーザーへの返信に追加した番号を含めたいと思います。

それをmySQLデータベースに入れることに興味はありません。

class Adder(resource):
    class Meta:
    authorization = Authorization()
    authentication = Authentication()

    def hydrate(self,bundle):
        _a = bundle.data['first_number']
        _b = bundle.data['second_number']

        self.create_response(request, return_dict)
        return bundle

Tastypie のドキュメントは、(明らかな理由から) モデルを中心に展開しているようです。

しかし、私は、create_response がハイドレート メソッド内から呼び出すことができるかどうか、およびハイドレート メソッドを呼び出すことがポスト データを処理する正しい方法であるかどうかに興味がありました。

4

1 に答える 1

2

おそらく、ハイドレート、apply_sorting、build_filters などのより細かいものはスキップするでしょう。

API の背後にオブジェクトがなければ、 のようなリストのような URL を使用していて/api/v1/add_stuff/、POST リクエストを受け入れていると仮定しています。これらの仮定が間違っている場合は、post_detail、get_list などに変更して調整できます。

def post_list(self, request, **kwargs):
    _a = request.POST.get('first_number', None)
    _b = request.POST.get('second_number', None)
    if None in (_a, _b):
        raise HttpBadRequest()
    return self.create_response(request, {'result': _a + _b})

このコードは機能すると思いますが、テストしていないことに注意してください。出発点を提供することを目的としています。

Tastypie ドキュメントのこのセクションでは、さまざまなメソッドが呼び出される順序について説明します。また、ページの下部には完全な API リファレンスがあり、期待されるパラメーターと返されるはずのパラメーターを確認できます。

編集:

この状況のフローは次のようになります。

  1. ではdispatch、リクエスト uri が検査されます。/api/v1/add_stuff/<pk>/詳細またはリスト uri が要求されたかどうか (または ) に応じて、処理はまたは /api/v1/add_stuff/に委任されます。これは、認証、承認、およびスロットリングのチェックが行われる場所でもあります。dispatch_detaildispatch_list

  2. ではdispatch_list、リクエスト メソッドが検査され、呼び出しが という名前のメソッドに委譲され'%s_list' % request.METHOD.lower()ます。あなたのコメントに答えるために、これらは魔法のメソッド名です。リクエスト メソッドが POST の場合、dispatch_list指定されたメソッドを探し post_list、適切なハンドラが定義されていない場合はエラーがスローされます。

于 2012-09-20T16:42:36.243 に答える