https://codebunny99.tistory.com/170
๋ฉ๋ชจ ์ฑ app (ํ์๊ฐ์ , ๋ก๊ทธ์ธ ๊ธฐ๋ฅ) Retrofit ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค๊ธฐ
Restful API๋ฅผ MySQL๊ณผ ์ฐ๋ํ์ฌ Postman์ผ๋ก ๊ฐ๋ฐํ ํ, ์งํํ์๋ค. ์กํฐ๋นํฐ ์ธ ๊ฐ ๋ง๋ค๊ธฐ ํ๊ฒฝ๋ณ์ ์ค์ ํ๊ธฐRetrofit ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์นํ๊ธฐ build.gradle.kts(:app)์์implementation("com.squareup.retrofi
codebunny99.tistory.com
------------------------------------------------------------------------------------------------------------------------------------------------
๊ฒฐ๋ก ์์ฝํ๊ธฐ
onCreate ํจ์ ์์ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ,์์ , ์ญ์ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ๊ณ ,
// ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋, ์์ ํ๊ฑฐ๋, ์ญ์ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ์ฝ๋
Dialog dialog;
void showProgress(){
dialog = new Dialog(this);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setContentView(new ProgressBar(this));
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
void dismissProgress(){
dialog.dismiss();
}
Call call = api.register(user); ๋ฅผ ํตํด์, api ํจ์๋ฅผ ๋ง๋ค๊ณ ,
api๋ฅผ ํธ์ถํ๋ ๊ณผ์ ์์ Call<UserRes> ์ accessToken(์ก์ธ์ค ํ ํฐ)์ ํธ์ถํ๊ณ ,
์๋์ ๊ฐ์ด ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ํ ํฐ์ ์ ์ฅํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ๋๋ค.
SharedPreferences sp = getSharedPreferences(Config.SP_NAME,MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("token", userRes.accessToken);
editor.commit(); //์ฑ์ ์ญ์ ํ๊ธฐ ์ ๊น์ง๋ ์๊ตฌ์ ์ฅํด์ค๋ค
------------------------------------------------------------------------------------------------------------------------------------------------
RegisterActivity.java ํด๋์ค
onCreate ํจ์ ์์ ์์ฑํด์ค๋ค
// ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋, ์์ ํ๊ฑฐ๋, ์ญ์ ํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ์ฝ๋
Dialog dialog;
void showProgress(){
dialog = new Dialog(this);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setContentView(new ProgressBar(this));
dialog.setCancelable(false);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
void dismissProgress(){
dialog.dismiss();
}
์๋ฒ๋ก ๋ถํฐ ๋ฐ์ ํ ํฐ์ ์ ์ฅํ๋ ์ฝ๋์ด๋ค.
// ํ์๊ฐ์
API๋ฅผ ํธ์ถํ๋ค.
// 0. ๋ค์ด์ผ๋ก๊ทธ๋ฅผ ๋ณด์ฌ์ค๋ค.
showProgress();
// 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());
//๋ค์ด์ผ๋ก๊ทธ๋ฅผ ๋จผ์ ์์ค๋ค.
dismissProgress();
// 200 OK ์ผ๋,
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 if(response.code() == 500){
Snackbar.make(btnRegister, "์ด๋ฏธ ํ์๊ฐ์
ํ ์ด๋ฉ์ผ์
๋๋ค. ๋ก๊ทธ์ธํ์ธ์.",
Snackbar.LENGTH_SHORT).show();
return;
}else {
Snackbar.make(btnRegister, "์๋ฒ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ ์ ํ ๋ค์ ์๋ํ์ธ์.",
Snackbar.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<UserRes> call, Throwable throwable) {
//๋ค์ด์ผ๋ก๊ทธ๋ฅผ ๋จผ์ ์์ค๋ค.
dismissProgress();
}
});
api
- api๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์๋ค
- UserApi
package com.~.memo.api;
import com.~.memo.model.User;
import com.~.memo.model.UserRes;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface UserApi { //์ธํฐํ์ด์ค๋ก ๋ฐ๊ฟ์ค๋ค.
// HTTP Method ์จ์ฃผ๊ณ , ๊ทธ ์์๋ ๊ฒฝ๋ก๋ฅผ ์จ์ค๋ค.
// ํจ์์ ๋ฆฌํด ๋ฐ์ดํฐ ํ์
์, Call ์์ ์๋ต์ผ๋ก ๋ฐ์ ํด๋์ค๋ฅผ ๋ฃ์ด์ค๋ค.
// ํจ์๋ช
์ ์์ฑํด์ฃผ๊ณ , ๋ณด๋ผ ๋ฐ์ดํฐ๋ ํ๋ผ๋ฏธํฐ์ ์์ฑ, ๋ฐ์ ๋ฐ์ดํฐ๋ ๋ฆฌํด์ ์์ฑ.
@POST("/dev/user/register")
Call<UserRes> register(@Body User user);
- UserRes
package com.~.memo.model;
public class UserRes {
public String result;
public String accessToken;
}