さて、私はこの RESTful アーキテクチャのサーバーとクライアント (内部で使用される) の両方の部分を担当しています。(レストレットを使用)。
Post 操作を公開するリソースがあります。簡略版は次のとおりです。
public class UserResource {
@Post
public Representation create(UserRegistration registration) {
SomeService.getInstance().createUser(registration);
return new XstreamRepresentation(new RegistrationResponse(registration.getUniqueCode()););
}
数か月間、これらのサービスを使用していたのは私たちだけだったので、ドメイン オブジェクトはクライアント側とサーバー側で共有されていました...そして問題なく動作しています。
これらのリソースを文書化し、他のクライアントがそれらを使用できるようにする必要があるため、いくつかの「問題」が発生しているため、この API は少し複雑すぎるのではないかと思いました。
たとえば、この郵便サービス。内部メソッドは複合型UserRegistrationを受け入れます
public class UserRegistration implements Serializable {
private Profile profile;
private Boolean someBooleanProperty;
public UserRegistration(Profile profile) {
this(profile, true);
}
public Profile getProfile() {
return profile;
}
public boolean isSomeBooleanProperty() {
return someBooleanProperty;
}
}
次に、別の複雑なオブジェクト (プロファイル) を使用します。
public class Profile {
private String nickname;
private String email;
private String password;
private String firstname;
private String lastname;
private Date birthDate;
private String phone;
private Address address;
private GenderType gender;
private String subscriptionSite;
private Date privacyAcceptanceDate;
private Date subscriptionDate;
private String activationCode;
private String socialSecurityNumber;
...
多くの複雑な型などを使用しています。
この複雑な型の使用は、私を本当に悩ませているものです。これを文書化する方法がわからない (これらの複雑なオブジェクトの内部プロパティの長い長いリストを作成することは別として) か、単に道に迷っています。
私の質問は次のとおりです。単純化する必要がありますか? このアーキテクチャは非常に悪い設計ですか? いくつかのビルダーメソッドでうまくいくでしょうか?