0

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

所以想象我有一个Person对象,我想更新他们的年龄。在非 HTTP 世界中,您应该有一个名为的方法<PersonObject>.getAge()和另一个名为<PersonObject>.setAge(int newAge). 但是,相反,您有一个保存用户个人资料信息的网络服务器。根据 HTTP 约定,您将拥有一个类似“/account/age”的 URL。要获取他们的年龄,您可以使用“GET”请求该 URL,并设置他们的年龄,您可以使用“POST”请求该 URL,并以某种方式(表单、JSON、URL-arg 等)发送新的价值。

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

为什么不使用一个名为“/account/getAge”的 URL 和另一个名为“/account/setAge”的 URL?

4

2 回答 2

1

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

但是,您通过 HTTP 请求与之交谈的是控制器,它们很少使用 getter 和 setter(我想我不需要向有经验的程序员解释 MVC 设计模式)。你永远不应该通过 HTTP 直接访问你的模型(身份验证和错误处理等等……)

如果您有空闲时间,我建议您看看这个截屏视频,我发现它非常有用。

于 2013-04-26T22:53:12.563 回答
1

如果您愿意,您当然可以有单独的 URL,但是由于重载,getter 和 setter 无论如何都可以在您问题的原始上下文中共享名称。

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

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

于 2013-04-26T22:14:20.590 回答