使用GET和POST vs getter和setter方法(URLS)

时间:2013-04-26 22:10:06

标签: html http network-protocols

作为一名训练有素的程序员,我已经被教导,反复使用getter和setter方法来控制类变量的访问和修改。这就是你被告知用Java,Python,C ++和几乎所有其他现代语言来做这件事的方式。然而,当我开始学习Web开发时,这似乎被抛弃了。相反,我们被告知使用一个带有GET和POST调用的URL,这看起来很奇怪。

想象一下,我有一个Person对象,我想更新它们的年龄。在非HTTP世界中,您应该有一个名为<PersonObject>.getAge()的方法和另一个名为<PersonObject>.setAge(int newAge)的方法。但是,相反,你有一个保存用户个人资料信息的网络服务器。根据HTTP惯例,您有一个像'/ account / age'这样的网址。为了获得他们的年龄,你要求带有'GET'的URL,并设置他们的年龄,你要求带有'POST'的URL以及某种方式(form,JSON,URL-arg等)发送新的价值观。

HTTP方法感觉很尴尬。对我来说,这类似于将非HTTP版本更改为一个名为age的方法,并且您将使用<PersonObject>.age('GET')获得其年龄,并将其年龄设置为<PersonObject>.age(newAge, 'SET')。为什么这样做?

为什么没有一个名为'/ account / getAge'的网址和另一个名为'/ account / setAge'的网址?

2 个答案:

答案 0 :(得分:1)

如果您愿意,您当然可以拥有单独的网址,但是由于超载,getter和setter可以在您的问题的原始上下文中共享名称。

class Person {
    private age;
    public age() {
        return this.age;
    }
    public age(int age) {
        this.age = age;
    }
}

所以,如果它对你有帮助,你可以这样想。

答案 1 :(得分:1)

您所指的是RESTful API。虽然不是必需的(你可以只使用getter和setter)但它确实被认为是一种很好的做法。但是,这并不是必须更改数据对象的代码。我总是在模型层中使用getter和setter作为我的业务逻辑。

你通过HTTP请求谈论的是控制器,但他们很少使用getter和setter(我想我不需要向有经验的程序员解释MVC设计模式)。您永远不应该通过HTTP直接访问您的模型(如何进行身份验证和错误处理以及其他内容......)

如果你有空闲时间,我会建议你看看这个screencast,我认为这非常有用。