我的问题非常简单,虽然我在官方的GAE python doc上搜索了几个小时,但我无法找到这个问题的真实答案(特别是在this page上)
让我们说我正在建立一个应用程序后端,应用程序会发出几种请求,这些请求都有些相关,但它们都可以按照他们通过端点方法请求的数据类型进行分组。
现在,我构建了与这些请求相对应的所有messages.Message
类,它们都位于单独的模块中。例如,我将所有与用户相关的请求/响应消息,所有与评论相关的消息以及所有与调查相关的消息(它是一个简单的调查应用程序)分组。
问题是:在保持简单的同时对端点API进行分段的最佳(可能)方法是什么(为了避免在同一remote.Service
类中有一个包含太多请求的巨大文件)。
我可以创建多个remote.Service
类(然后将它们分布在多个模块上,然后将它们全部包含在一个模块中)吗?
像这样:
@endpoints.api(name='helloworld', version='v1')
class UsersApi(remote.Service):
"""Users API v1."""
#some endpoints methods, all with the "users/ path"
class CommentsApi(remote.Service):
"""Comments API v1."""
#some endpoints methods, all with the "comments/ path"
class SurveysApi(remote.Service):
"""Surveys API v1."""
#some endpoints methods, all with the "surveys/ path"
APPLICATION = endpoints.api_server([UsersApi, CommentsApi, SurveysApi])
或者我应该使用app.yaml文件中给出的路由来路由请求? 这两种解决方案是否可能?他们甚至是最好的吗?
如果你能找到比我的命题更好的方法来实现这一目标,请继续告诉我更多关于它的信息。如果不清楚,我可以提供一些我的建议的代码示例。 提前感谢您的帮助。
答案 0 :(得分:0)
好吧,无论如何,我在stackoverflow上使用了一些信息,并重新阅读了官方文档,对其进行了测试,并且有效。 这是一个例子:
from google.appengine.ext import endpoints
from protorpc import remote
my_api = endpoints.api(name='awsum_app', version='valpha')
@my_api.api_class(resource_name='users')
class UsersService(remote.Service):
@endpoints.method(UserRegistrationRequest, UserLoginResponse, path='users/register', name='register')
def user_register(self, request):
"""Registerin' users man"""
@endpoints.method(UserLoginRequest, UserLoginResponse, path='users/login', name='login')
def user_login(self, request):
"""Login dat user"""
@endpoints.method(UserLogoutRequest, UserLogoutResponse, path='users/logout', name='logout')
def user_logout(self, request):
"""Dude this user is so login out, cya bro"""
@my_api.api_class(resource_name='friends')
class FriendsService(remote.Service):
@endpoints.method(AddressBookRequest, AddressBookResponse, path='friends/addressbook', name='addressbook')
def get_address_book(self, request):
"""Retrieveing mah address book to look up bros to hand out with"""
@endpoints.method(AddFriendRequestRequest, AddFriendRequestResponse, path='friends/friendrequest', name='friendrequest')
def send_friend_request(self, request):
"""Hey dis bro looks cool let's add him"""
@endpoints.method(AcceptFriendRequestRequest, AcceptFriendRequestResponse, path='friends/acceptrequest', name='acceptrequest')
def accept_friend_request(self, request):
"""Ok man you're cool let's be friend"""
@endpoints.method(DeleteFriendRequest, DeleteFriendResponse, path='friends/deletefriend', name='deletefriend')
def delete_friend(self, request):
"""Shit dis fucker's a bitch i ain't no friend no more with this bitch"""
APPLICATION = endpoints.api_server([my_api])