【问题标题】:What is the preferable method for sending request in mobile API in Rails在 Rails 的移动 API 中发送请求的首选方法是什么
【发布时间】:2013-07-22 21:47:14
【问题描述】:

我创建了一个 API 控制器来仅处理来自 Android 应用程序的 json 请求。当然,我正在使用令牌身份验证。什么会更好: 使用 POST 发送请求:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.0.170:3000/api/get_all");
httppost.setHeader("content-type", "application/json; charset= utf-8");
httppost.setHeader("Accept", "application/json");
JSONObject json = new JSONObject();
json.put("token", token);
StringEntity entity = new StringEntity(json.toString(), "utf-8");
httppost.setEntity(entity);
HttpResponse response = httpclient.execute(httppost);

或获取:

httpget = new HttpGet("http://10.0.0.170:3000/api/get_all?"+"token="+token);
httpget.setHeader("content-type", "application/json; charset= utf-8");
httpget.setHeader("Accept", "application/json");
response = httpclient.execute(httpget);
result = EntityUtils.toString(response.getEntity());

显然 GET 中的代码更少,但还有其他理由更喜欢其中一个吗?

【问题讨论】:

    标签: android ruby-on-rails authentication post get


    【解决方案1】:

    即使您使用此令牌进行简单查找,即不更改服务器上的状态,也请使用 POST。如果使用 GET,Web 服务器将记录所有查询参数,使其更容易受到例如日志注入攻击。

    您还应该考虑在生产中使用 HTTPS 作为身份验证令牌。 在您的代码中,还要考虑处理来自 Web 服务器的返回状态(例如,当它不是 200 时)。

    一般来说,对于 POST 与 GET 的选择,您也可以参考 W3C:

    在以下情况下使用 GET:

    • 交互更像是一个问题(即,它是一种安全操作,例如查询、读取操作或查找)。

    在以下情况下使用 POST:

    • 交互更像是一个订单,或者
    • 交互以用户感知的方式更改资源的状态(例如,订阅服务),或
    • 用户应对交互结果负责。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 2011-02-07
      • 2015-08-06
      • 2018-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多