본문 바로가기
Java/AndroidStudio

Android - Retrofit2 라이브러리 이용 POST API 호출

by 하니__ 2024. 6. 13.

 

 

 

회원가입 API를 사용한다고 가정해보자

 

 

우선 사용해야할 정보는 좌측과 같고

화면정보는 우측과 같게 설정했다고 가정하자

 

그렇다면

회원가입 버튼을 눌렀을때 이벤트 진행으로 시작한다

 

 

버튼 온클릭 이벤트로 시작

입력된 정보들을 가져오고

비어있는지 확인하고

 

이런 과정은 넘어가고

API를 호출하는 부분으로 넘어가겠다

 

우선 준비 작업이 필요하다

모델 패키지를 생성,

유저의 정보를 담당하는 유저 클래스를 생성한다

 

그리고 입력받을 정보인

이메일과 비밀번호 그리고 닉네임을 저장할 수 있도록 하자

그리고 생성자도 잊지말고 설정해두자

 

덤으로 로그인용 생성자도

 

 


그리고 회원가입이 성공했을때,

로그인에 성공했을때,

돌려받는 JSON의 인증토큰이 필요하다

 

그래서 이번에는 유저의 Resource값을 돌려받는 클래스를 생성

해당값인 리절트와 액세스토큰을 저장할수 있도록 입력해주자

 

해당 스샷에는 서로 변수이름이 맞지않으니 통일하도록 하자

 

 

 

그리고 이번에는 api패키지에

User관련 API를 담당할

인터페이스 파일을 생성하자

 

이 부분은 API 호출하여 Body에 돌려 받을 데이터를 저장할때 필요한 공간이다

위에서 봤듯이 인증토큰을 얻어야 하기 때문이다

 

HTTP 메소드인

@POST를 적어주고

( )파라미터에 경로를 적어주자

이때 다른 코드에서 앞의 도메인은 하드코딩을 피하기위해 컨픽 파일에 저장되어있으니

그 뒤부터 적도록 하자

 

그리고 그 아래인

Call 객체는 HTTP 요청을 나타내며, 이를 통해 요청을 실행하거나 응답을 하도록 한다

응답 데이터를 담기 위해 정의된 모델 클래스,위에서 생성한 UserRes에 담는다

그리고 그것을

각각 회원가입은 register

로그인은 login으로 메소드 지정

 

그리고 파라미터에

Body로 오는 데이터를 받기위해 @body

본문에 포함될 데이터인 User 클래스의 user로 지정

 

 

요약 하자면
1. HTTP 메소드 POST 요청
2. 엔드포인트는 /dev/user/register 
3. CALL 요청시 받는 데이터 <UserRes>
4. Register, Login 이를 담당하는 메소드의 이름
5. @Body User user 
        body에 보낼 데이터는 User 클래스에 있고 이를 user라고 변수로 지정

 

 

 

그리고

회원가입의 경우

// 1. 레트로핏 변수 생성 : api 패키지에 NetworkClient.java 파일이 있어야 한다.
Retrofit retrofit = NetworkClient.getRetrofitClient(RegisterActivity.this);
// 2. api 패키지에 있는 인터페이스를 클래스 객체로 생성 : api 패키지에 인터페이스가 있어야 한다.
UserApi api = retrofit.create(UserApi.class);
// 3. 보낼 데이터를 만든다.
User user = new User(email, password, nickname);
// 4. api 함수를 만든다.
Call<UserRes> call = api.register(user);
// 5. api 를 호출한다.
call.enqueue(new Callback<UserRes>() {
    @Override
    public void onResponse(Call<UserRes> call, Response<UserRes> response) {
        Log.i("MEMO REGISTER", ""+ response.code());

        if(response.isSuccessful()){

            UserRes userRes = response.body();
            Log.i("MEMO REGISTER", userRes.accessToken );

            SharedPreferences sp = getSharedPreferences(Config.SP_NAME, MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
            editor.putString("token", userRes.accessToken);
            editor.commit();

            Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
            return;

        }else {
            Snackbar.make(btnRegister,
                    "서버에 문제가 있습니다. 잠시 다시 시도하세요.",
                    Snackbar.LENGTH_SHORT).show();
            return;
        }
    }

    @Override
    public void onFailure(Call<UserRes> call, Throwable throwable) {

    }
});

의 형식으로 진행하자