api 패키지 안에 사용할 api 들에 맞게 인터페이스를 생성한다.
유저에 관한 api이기 때문에 UserApi 인터페이스 생성한다.
public interface UserApi {
// 회원가입 API
@POST("/user/register")
Call<UserRes> register(@Body User user);
}
httpmethod(path)
Call<반환타입> 함수명(@Body 보낼 데이터 = 클래스 객체로)
위 형식으로 함수를 생성한다.
그러기 위해선 보낼 객체와 받을 객체가 필요하기 때문에,
model 패키지에 User, UserRes 클래스를 생성한다.
public class User {
public String email;
public String password;
public String nickname;
public User(){
}
public User(String email, String password, String nickname) {
this.email = email;
this.password = password;
this.nickname = nickname;
}
}
public class UserRes {
public String result;
public String access_token;
}
위 클래스의 변수들은 각각 서버에 요청, 응답 할 때의 변수명, 결과 문자열과 같아야 한다.
요청, 응답 예시
통신 코드
// 1. retrofit 변수 생성
Retrofit retrofit = NetworkClient.getRetrofitClient(RegisterActivity.this);
// 2. api 패키지에 있는 interface 생성
UserApi api = retrofit.create(UserApi.class);
// 3. 보낼 데이터 만든다 -> 클래스 객체 생성
User user = new User(email, password, nickname);
// 4. api 호출
Call<UserRes> call = api.register(user);
// 5. 서버로부터 받은 응답을 처리하는 코드 작성
call.enqueue(new Callback<UserRes>() {
@Override
public void onResponse(Call<UserRes> call, Response<UserRes> response) {
dismissProgress();
// 서버에서 보낸 응답이 200 OK 일때 처리하는 코드
if (response.isSuccessful()){
UserRes userRes = response.body();
SharedPreferences sp = getSharedPreferences(Config.PREFERENCE_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("token", userRes.access_token);
editor.apply();
// 이상 없으므로, 메인 액티비티를 실행한다.
Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
startActivity(intent);
finish();
} else {
}
}
@Override
public void onFailure(Call<UserRes> call, Throwable t) {
dismissProgress();
// 유저한테 네트워크 통신 실패했다고 알려준다.
Snackbar.make(btnRegister, "통신 실패", Snackbar.LENGTH_SHORT).show();
}
});
응답에 성공했을 때 SharedPreference에 JWT 토큰을 넣고 메인 액티비티로 이동한다.
'Android Studio' 카테고리의 다른 글
[Android Studio] Retrofit2 통신 시 상태 코드에 따른 코드 작성법 (1) | 2024.01.04 |
---|---|
[Android Studio] 네트워크로 데이터 처리할 때 사용하는 프로그레스 다이얼로그 만들기 (1) | 2024.01.04 |
[Android Studio] Retrofit2 라이브러리 사용을 위한 세팅 방법 (2) | 2024.01.04 |
[Android Studio] Volley 라이브러리로 통신 시 Header에 데이터 세팅하는 방법 (1) | 2024.01.03 |
[Android Studio] Volley 라이브러리를 이용한 POST 통신 방법 (body에 json 보내기) (2) | 2024.01.03 |