2

我花了整整一周时间将美味派整合到我的项目中,现在我无法停止思考“我为什么要这样做”。

我正在使用 django 和 sweetpie(REST 框架),但我的问题可以应用于其他语言/框架。

我的要求是
1. 移动客户端请求 json
2. 网络客户端请求 html 和 json

所以我有

  1. json请求的end_point(例如,给我这个用​​户的图像)
  2. html请求的end_point(给我一个带有他的图像等的用户主页)
  3. core_service(底部)将图像字典列表返回到#1和#2
def user_image_list_json(request): # 1
   dict = service.user_image_list(request.user_id)
   return serialize_as_json(dict)

def user_home(request): #2
    #build other parts of user home such as `user name`
    dict = service.user_image_list(request.user_id)
    #stuff that dict inside html 
    #build other parts of the page
    return html_response

#3
def image_list_user(user_id, last_image_id,request_comment_count, count):
    if last_image_id is not None:
        last_image_id = int(last_image_id)
        queryset = AlbumImage.objects.select_related().filter(id__lt=last_image_id).filter(album__user_profile__user__id = user_id)
    else:
        queryset = AlbumImage.objects.select_related().filter(album__user_profile__user__id = user_id)

    if count is not None:
        count = min(IMAGE_LIST_COUNT, count)
        queryset = queryset[0:count]
    else:
        count = IMAGE_LIST_COUNT

    album_image_list = list(queryset)

    #dict_list = [album_image.to_dict() for album_image in album_image_list]                                                                                                                                                                                                  
    dict_list = append_comment_list(album_image_list,request_comment_count)
    return dict_list

这就是我构建 Web 服务以服务 Web 客户端和移动客户端的方式。
现在我听说 REST 框架可以简化 Web 开发。(这是我的第一个 Web 开发)
我采用了 sweetpie(一个 django/python REST api 框架)

我预计tastepie 会在第3 级(common_service)替换我的代码。
但我发现它实际上是#1/#3 绑在一起的。

如果我的理解是正确的,我最终会得到

  1. json请求的end_point(例如,给我这个用​​户的图像)
  2. html请求的end_point(给我一个带有他的图像的用户主页)
  3. core_service(在底部)将python字典返回到#1和#2
  4. 作为#1/#3 组合的美味派

所以即使我有美味派,我仍然需要#3.(核心服务)。
我觉得很奇怪...

从其他观点使用tastepie api是我的相关问题。

4

1 回答 1

2

美味派(或任何类似框架)的好处源于以 RESTful 方式设计代码。在这种情况下,使您的模型资源。

在您介绍的情况下,您如何将美味派集成到您的项目中并不明显,这可能解释了您对美味派(或类似框架)的好处的困惑。

AlbumImage将是一个很好的资源候选人:

class AlbumImageResource(ModelResource):
    class Meta:
        queryset = AlbumImage.objects.all()
        resource_name = 'album_image'

...然后,任何AlbumImageResource人都可以注册一个 URI ...

from myapp.api import AlbumImageResource

album_resource = EntryResource()

urlpatterns = patterns('',
    # The normal jazz here...
    (r'^api/', include(album_resource.urls)),
)

...并且可以通过该 URI 以任何格式访问它:

curl -H "Accept: application/json" http://127.0.0.1:8000/api/album_image/

然后,您就有了一个可以通过 URI 访问内容的 RESTful 系统。

事实上,文档甚至提供了限制访问的方法,以及过滤和排序数据的高级方法

于 2013-02-04T21:00:06.963 回答