[英]Question Regarding API Design
我正在研究最佳的“设计模式” Web API。 我目前正在使用Django作为我的Web框架。 我创建了一个非ajax界面,该界面可导致在每次请求时重新加载整个页面。
现在,我开始将ajax集成到界面中。 为了便于讨论,以下是我需要添加API的两个示例功能:
1)测试页:用户提供一个电子邮件地址。 我想对服务器端进行ajax调用,以查看它是否已存在于我的数据库中。 我对此调用的初始设计将是类似于
def check_email(request):
if request.method == "POST":
# check db
# return JSON true/false
2)上传个人资料图片,将新的个人资料图片添加到您的页面,而无需重新加载整个页面
据我所知,最好的方法是通过对视图函数的POST调用。 然后,响应将返回JSON,然后我可以将其相应地注入DOM中。
有人可以让我知道我在设计此API方面是否正确吗?
注意:我已经检查了django-活塞,而且看起来也很有用。
谢谢
是的,您似乎走对了。 一个小问题:要检查数据库中是否存在电子邮件地址,理想情况下应该使用GET而不是POST,因为没有信息正在更新-您只是在询问是否存在某些信息。
返回JSON的一种替代方法是返回预渲染的HTML,您可以在适当的时候将其直接注入DOM中。 这样做的好处是,您可以使用Django的模板机制来呈现现有的模板片段-唯一的区别是,您可以单独呈现一个片段,而不是在整个HTML页面中包含/扩展它。
您是正确的,但是我将使用request.is_ajax()
来检查它是否实际上是一个ajax请求,以相应地返回响应。 来自Django请求文档
如果通过XMLHttpRequest发出请求,则通过检查字符串'XMLHttpRequest'的HTTP_X_REQUESTED_WITH标头,返回True。 大多数现代的JavaScript库都会发送此标头。 如果您编写自己的XMLHttpRequest调用(在浏览器端),则要使is_ajax()工作,必须手动设置此标头。
这将允许您为禁用了javascript的用户分隔返回值,从而使他们仍然可以正确使用您的网站。 如果您不使用JavaScript库,则可以自行设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.