본문 바로가기
Android Studio

[Android Studio] Retrofit 라이브러리를 이용해 POST로 API 호출하기

by coding_su 2023. 2. 9.

📝레트로핏 라이브러리를 이용해 POST로 API 호출하기

우선 라이브러리를 사용하기 위해 클래스를 만들어준다(https://coding-jisu.tistory.com/283)

 

@POST("도메인 다음에 올 주소 입력")

Call<응답받은 데이터 저장할 클래스> 함수이름(@Body 바디에 보낼 데이터를 저장한 클래스);

// 유저 관련 API 들을 모아놓은 인터페이스
public interface UserApi {

    // 회원가입 API 함수 작성
    @POST("/user/register")
    Call<UserRes> register(@Body User user);

    // 로그인 API
    @POST("/user/login")
    Call<UserRes> login(@Body User user);
}

 

Retrofit 라이브러리를 이용해 POST로 API 호출한다

// 회원가입 API를 호출

// 1. 다이얼로그를 화면에 보여준다
showProgress("회원가입 진행중...");

// 2. 서버로 데이터를 보낸다
// 2-1. 레트로핏 변수 생성
Retrofit retrofit = NetworkClient.getRetrofitClient(RegisterActivity.this);
// 2-2. api 패키지에 있는 인터페이스 생성
UserApi api = retrofit.create(UserApi.class);
// 2-3. api 보낼 데이터 만들기 > 클래스의 객체 생성
User user = new User(email, password, nickname);
// 2-4. API 호출
Call<UserRes> call = api.register(user);
// 2.5 서버로부터 받아온 응답을 처리한다
call.enqueue(new Callback<UserRes>() {
    @Override
    public void onResponse(Call<UserRes> call, Response<UserRes> response) {
        // 프로그래스 다이얼로그가 있으면 나타나지않게 해준다
        dismissProgress();

        // 서버에서 보낸 응답이 200 OK일때 처리하는 코드
        if (response.isSuccessful()){
            // 서버가 보낸 데이터를 받는 방법
            UserRes res = response.body();

            // 억세스토큰은 api 호출할때마다 헤더에서 사용하므로
            // 회원가입이나 로그인이 끝나면 파일로 꼭 저장해놔야한다
            SharedPreferences sp = getApplication().getSharedPreferences(Config.PREFERENCE_NAME,MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
            editor.putString(Config.ACCESS_TOKEN, res.getAccess_token());
            editor.apply();

            // 3. 데이터를 이상없이 처리하면 메인 액티비티를 화면에 나오게 한다
            Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
            startActivity(intent);
            finish();

        } else {
            Log.i("MEMO_APP", response.toString());
        }

    }

    @Override
    public void onFailure(Call<UserRes> call, Throwable t) {
        // 프로그래스 다이얼로그가 있으면 나타나지않게 해준다
        dismissProgress();

    }
});

댓글