作为一名训练有素的程序员,我已经被教导,反复使用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'的网址?
答案 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,我认为这非常有用。