0

訓練を受けたプログラマーとして、クラス変数のアクセスと変更を制御するために getter メソッドと setter メソッドを使用することを繰り返し教えられてきました。これは、Java、Python、C++、および太陽の下にある他のほとんどすべての現代言語で行うように言われている方法です。しかし、Web 開発について学び始めたとき、これは脇に追いやられているように思えました。代わりに、GET 呼び出しと POST 呼び出しで 1 つの URL を使用するように指示されていますが、これは非常に奇妙に思えます。

オブジェクトがPersonあり、その年齢を更新したいとします。非 HTTP の世界では、 と呼ばれるメソッドと<PersonObject>.getAge()と呼ばれる別のメソッドを持つことになっています<PersonObject>.setAge(int newAge)。しかし、代わりに、ユーザー プロファイル情報を保持する Web サーバーがあるとします。HTTP 規則によると、「/account/age」のような URL になります。年齢を取得するには、「GET」でその URL を要求し、年齢を設定するには、「POST」でその URL を要求し、何らかの方法 (フォーム、JSON、URL 引数など) を送信します。新しい価値とともに。

HTTP メソッドはぎこちなく感じます。私にとって、これは非 HTTP バージョンを という 1 つのメソッドに変更することに似ておりage、 で年齢を取得し、 で年齢を<PersonObject>.age('GET')設定し<PersonObject>.age(newAge, 'SET')ます。なぜそのようにされるのですか?

「/account/getAge」と呼ばれる 1 つの URL と「/account/setAge」と呼ばれる別の URL を作成しないのはなぜですか?

4

2 に答える 2

1

あなたが言及しているのはRESTful APIです。必須ではありませんが (getter と setter を使用することもできます)、実際には良い習慣と見なされます。ただし、これは、データ オブジェクトのコードを変更する必要があるという意味ではありません。モデル層のビジネス ロジックには常にゲッターとセッターを使用します。

ただし、HTTP リクエストを介して話しているのはコントローラーであり、ゲッターとセッターを使用することはめったにありません (経験豊富なプログラマーに MVC 設計パターンを説明する必要はないと思います)。HTTP 経由でモデルに直接アクセスするべきではありません (認証やエラー処理などについてはどうですか...)

時間があれば、このスクリーンキャストをご覧になることをお勧めします。これは非常に便利です。

于 2013-04-26T22:53:12.563 に答える
1

必要に応じて別の URL を使用することもできますが、過負荷のため、ゲッターとセッターは質問の元のコンテキストで名前を共有できます。

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

それで、それがあなたを助けるなら、あなたはそれをそのように考えることができます.

于 2013-04-26T22:14:20.590 に答える