1. UI 로직은 앱에, 비지니스 로직은 서버에 두시면 됩니다. (상황에 따라 앱에 비지니스 로직이 들어가기도 합니다.)
예를 들어, 로그인 화면에 입력값이 들어오지 않은 경우 로그인 버튼의 상태를 enabled=false로 한다던가 하는 건 UI 로직이므로, 앱에 있으면 되고, 아이디나 비밀번호 중복 체크는 서버에서만 가능한 로직이므로 서버에 두면 됩니다. 서버에서 유효성 검사가 실패할 경우는 에러코드 같은 걸 반환하면 되겠죠. 모든 API를 일정한 포맷으로 해서 리턴하시면 앱에서 처리하기가 편할 겁니다. 예를 들어,
public class ApiResponse<T> {
private final boolean success;
private final T data;
private final int error;
// 생성자, getter.생략
}
error는 int, enum, Custom class 등등 상황에 맞게 설계하시면 될 것 같구요.
2. 어떤 게 정답이다라고 말씀 드리기는 힘들 것 같네요. 다만 갯수가 적다면 @Field를 써도 될 것 같고 그렇지 않다면 @Body를 사용하는 것이 처리하기가 편할 수 있다고 생각되네요. 아니면 모두 @Body만 사용하셔도 상관없을 것 같구요. 딱히 정답은 없기 때문에 기준을 정하셔서 거기에 맞춰서 하시면 될 듯합니다.