// POST 추가하기(서버에도 POST 추가하기)
RestTemplate은 Spring 3 이상 버전에서 제공하기 때문에 Android Studio에서는 REST API 통신을 간략하게 하기 위해 Retrofit2를 사용한다.
Retrofit2
안드로이드에서 사용하는 라이브러리로, http 통신을 간편하게 해준다.
- Retrofit2를 사용하지 않은 안드로이드 스튜디오 RestAPI get Code
https://velog.io/@duckchanahn/Android-Studio-RestApi
POJO(Plain Old Java Object)
//POJO에 대한 정리글 게시하고 링크 올리기
// <AndroidManifest.xml>
<uses-permission android:name="android.permission.INTERNET"/>
// <build.gradle (Module:app)>
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class retrofitClient {
private static final String BASE_URL = {"baseURL"};
// 가상머신에서는 개인 서버에 접속할 때 ip주소를 10.0.2.2로 설정
public static constants_RestAPI getApiService(){return getInstance().create(constants_RestAPI.class);}
//constants_RestAPI : api 를 미리 정의하여 유지보수를 편하게 하는 클래스 (직접 클래스를 만들 것이기 때문에 오류는 신경쓰지 않음)
private static Retrofit getInstance(){
Retrofit.Builder builder = new Retrofit.Builder();
builder.baseUrl( BASE_URL );
builder.addConverterFactory( GsonConverterFactory.create() );
retrofit = builder.build();
return retrofit;
}
}
baseURL : 자신이 쓰고자하는 URL의 기본 URL
ex)
http://localhost:9909/getTemp/qqq
http://localhost:9909/postTemp/qqq
http://localhost:9909/updateTemp/qqq
--> http://localhost:9909/
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
public interface constants_RestAPI {
//통신할 URL을 미리 정의하는 interface
//userInfo : POJO(DTO)를 정의해두는 클래스 (직접 클래스를 만들 것이기 때문에 오류는 신경쓰지 않음)
@GET("getTemp/{userId}")
Call<userInfo> getUserInfo(@Path("userId") String userId);
@POST("getTemp/qqq") //추가예정
Call<userInfo> postUserInfo(@Body userInfo userInfo);
}
- POJO Class 만들기
원하는 변수를 private으로 입력
ex) private String id; private String pw;
입력 후 Alt + Insert > getter and setter 선택
public class userInfo {
private String id;
private String pw;
public userInfo(String id) {
this.id = id;
}
public String getId() {return id;}
public void setId(String id) {this.id = id;}
public String getPw() {return pw;}
public void setPw(String name) {pw = pw;}
@Override
public String toString() {
return "userInfo{" +
"id='" + id + '\'' +
", pw='" + pw + '\'' +
'}';
}
}
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private CallRetrofit callRetrofit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.start_member);
callRetrofit = new CallRetrofit();
callRetrofit.callUserInfo("www");
// constants_RestAPI에서 설정한 코드 입력
}
}