将数据从设备发送到服务器的最佳方法是什么

时间:2014-03-25 09:58:18

标签: django http-get

我有一个应用程序,设备将数据发送到我的应用程序,应用程序存储数据 我的问题是从设备向服务器发送数据的最佳方法是什么?
设备可以是智能手机 现在我发送一个URL请求以及一些这样的数据:

www.example.com:8888/Data/?id=12345&name=john&DOB=25-09-1974

我在Django中使用GET Request获取数据,然后保存数据。这是对的吗?或者我应该遵循其他一些过程?

P.S数据不敏感。我的意思是安全不是一个问题。

1 个答案:

答案 0 :(得分:1)

您不应通过“GET”将数据上传到服务器。这就是“POST”方法的用途。

根据HTTP / 1.1规范:

  

POST方法用于请求源服务器接受   请求中包含的实体作为资源的新下属   由请求行中的Request-URI标识

换句话说,POST用于创建。

如果您认为您的数据是敏感的,则无关紧要。通过实现改变服务器上数据的方法,您将自动提供一种可被任何人滥用的方法。因此,所有这些接口必须在安全性方面具有相同的彻底性。

您的问题并未提供有关您希望如何处理传输数据的任何信息。您是要将其持久存储在数据库中还是仅在当前访问期间与用户相关的数据?

基本上,你有三种方式:

<强> 1。持久存储。

您将数据存储在数据库中。 在这种情况下,您应该使用带有上述“post”方法的表单。

#your_template.html
<form method="post" action="<your action">
<!-- do something -->
{{ form }}
</form>

#your_view.py
def your_view(request):
    if request.method == 'POST':        
        form = YourForm(request.POST) 
        if form.is_valid(): # All validation rules pass
            # Process the data in form.cleaned_data
            # ...
            return HttpResponseRedirect('/thanks/') # Redirect after POST
    else:
        form = YourForm() # An unbound form

    return render(request, 'your_template.html', {
        'form': form,
    })

有关django表单的详细信息,请参阅https://docs.djangoproject.com/en/dev/topics/forms/

<强> 2。临时存储。

您不需要持久存储任何这些结果,因此您可以使用django的会话机制,这将允许您传递在特定用户访问您的页面时才有效的数据。您可以调整会话对象的生存时间

有关django会话的更多信息,请参阅https://docs.djangoproject.com/en/dev/topics/http/sessions/

第3。基于客户端的存储。 一直到客户端并使用将存储在客户端计算机上的cookie,并且只是由服务器读取。但是在评估cookie值时你必须要更加彻底。

请参阅Django Cookies, how can I set them?获取django的小cookie帮助,然后从那里取出