【问题标题】:Changing from GET to POST从 GET 更改为 POST
【发布时间】:2017-03-01 17:18:17
【问题描述】:

我不是经验丰富的开发人员,但我目前正在学徒,我的高级开发人员最近离开了,我一个人呆着!

他告诉我,使用“GET”请求比“POST”更好,但在阅读后我想切换到“POST”,我唯一的问题是我有点不确定如何修改我的代码以进行切换从“获取”。我在下面留下了我们系统的通用 $scope。任何帮助都会很棒

$scope.changenote=function(id,note){
note = encodeURIComponent(note);
var inserthistory = './dbscripts/solicitors/changenote.php?id=' + id + '&user=' + AppStorage.getCurrentUser().username + '&note=' + note;
console.log(inserthistory);
                    $http({method: 'GET', url: inserthistory}).success(function(data) {

       var historyurl = './dbscripts/solicitors/gethistory.php?ref=' + $scope.bbref;

            $http({
                method: 'GET',
                url: historyurl
            }).success(function(data) {
                $scope.histnoteaddbtn = [];
                $scope.history = data;
             $state.go($state.current, {}, {
                    reload: true

            });
    });
 swal("Saved!", "Your note has been saved!", "success")
})
}

【问题讨论】:

  • 嗯,这取决于您在使用什么系统!我的意思是它是 CMS 还是...?而且您不能总是将 GET 更改为 POST !有时你需要在某些功能中使用每一个!关于安全性, POST 和 GET 基本上没有区别!在这两种情况下,您都必须使用准备好的查询语句并在查询中使用数据之前检查数据!
  • @GeomanYabes 大喊大叫?在哪里?
  • Soheyl 的评论.. :D 总是带有!
  • 我不好的是看 OP 的帖子 ;)
  • 它们在语义上是不同的——你可以使用 GET 来获取资源(例如 id 为 26 的页面)和 POST 来创建资源(例如发布生成网络邮件的表单)——尽管因为 HTML 表单仅支持获取和发布,但发布的用途不止于此。如果您正在构建一个 RESTful 应用程序...:restapitutorial.com/lessons/httpmethods.html 简而言之,使用 HTML,您不希望有人能够通过在地址栏中输入内容来创建/更新/删除资源 - 所以只能使用 @ 987654326@阅读。

标签: php html angularjs


【解决方案1】:

做得好,在第一种情况下,我重构了这段代码。我不知道为什么所有这些字符串都保存到一个变量中,而它却再也没有在代码中使用过。我真的不知道它的用途。我在这里将您的请求方法从GET 更改为POST。您可能需要检查您的 API 端点并让它们监听 POST 请求。最后,您的代码将如下所示:

注意:请求数据仍被解析为您请求的 URL。要创建 RESTful API,您应该在这里查看W3C HTTP Method Definition。所有请求方法都关注一个特殊的用例。

$scope.changenote = function(id,note){
    $http({method:
        'POST',
        url: './dbscripts/solicitors/changenote.php?id=' + id + '&user=' + AppStorage.getCurrentUser().username + '&note=' + encodeURIComponent(note)}
        ).success(function(data) {
            $http({
                method: 'POST',
                url: './dbscripts/solicitors/gethistory.php?ref=' + $scope.bbref
            }).success(function(data) {
                $scope.histnoteaddbtn = [];
                $scope.history = data;
                $state.go($state.current, {}, {
                    reload: true

                });
            });
            swal("Saved!", "Your note has been saved!", "success")
    })
};

【讨论】:

  • 谢谢伙计,我不确定这有多容易。我在向数据库发送非常大的字符串时遇到问题。噩梦!
  • @AlexBanerjee 欢迎您。您可能会将数据解析为请求正文而不是 URL。 URL 有很多限制。
  • 我有点不确定这是怎么做到的。我认为这就是“POST”所做的,这就是我想从“GET”切换的原因。我下周开始一门课程,希望我能学到更多。一次投入到 Angular、html 和 css 中有点让人不知所措 xD
  • @AlexBanerjee 了解 HTTP。首先让你自己理解 HTTP 是如何工作的,它将在未来对你有所帮助。
猜你喜欢
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-21
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
  • 2018-01-10
相关资源
最近更新 更多