네트워크 라이브러리 _ Retrofit2
1. retrofit랑 액티비티랑 연결
Retrofit retrofit = NetworkClient.getRetrofitClient(현재 엑티비티.this);
2. 함수를 쓰기 위해 API 개발
VideoApi api = retrofit.create(VideoApi.class);
3. API 만들기
- app/java/com.---/api 디렉터리 만들기
- 관련 이름명으로 API Interface 만들기
- 안에 POSTMAN을 보고 잘 작동되는 서버의 키를 넣어준다.
더보기
GET 방식
예시
// 유튜브에 검색하는 API
// HTTP Method 써주고, 그 안에는 경로를 써준다.
@GET("/youtube/v3/search")
Call<VideoList> SearchVideo(@Query("key") String key,
@Query("part") String part,
@Query("maxResults") int maxResults,
@Query("order") String order,
@Query("type") String type,
@Query("q") String q);
// 함수의 리턴 데이터 타입은, Call 안에, 응답으로 받을 클래스를 넣어준다.
// 내 메모 리스트 가져오는 API
@GET("/memos")
Call<MemoList> getMemoList(@Header("Authorization") String token);
POST 방식
예시
// 회원가입 API
// 함수명을 작성해주고, 보낼 데이터는 파라미터에 작성하고,
// 받을 데이터는 리턴 타입(Call<>)에 작성한다.
@POST("/users/register")
Call<UserRes> register(@Body User user);
// 로그인 API
@POST("/users/login")
Call<UserRes> login(@Body User user);
// 내 메모 생성하는 API
@POST("/memos")
Call<Res> addMemo(@Header("Authorization") String token, @Body Memo memo);
DELETE 방식
예시
// 내 메모 삭제하는 API
@DELETE("/memos/{memoId}")
Call<Res> deleteMemo(@Path("memoId") int memoId, @Header("Authorization") String token);
PUT 방식
예시
// 내 메모 수정하는 API
@PUT("/memos/{memoId}")
Call<Res> updateMemo(@Path("memoId") int memoId, @Header("Authorization") String token, @Body Memo memo);
- 응답 온 데이터를 받아서 저장해 줄 model 디렉터리를 만들고,
안에 변수로 작성해 준다. (Res.java 파일은 실행 결과를 응답해 주는 것을 받아주기 위해 만든 클래스이다.)
예시
public class Res {
public String result;
}
- 액티비티 코드에 API 인터페이스 이용해서 API 만들기
// API 를 만들고
Call<VideoList> call = api.SearchVideo(API 안에 들어갈 데이터 넣기(예) "Bearer "+token, ...));
4. 네트워크로 호출한다.
// 네트워크로 호출한다.
call.enqueue(new Callback<VideoList>() {
// 자동완성 코드
@Override
public void onResponse(Call<VideoList> call, Response<VideoList> response) {
// 네트워크 통신 성공
// 에러 체크
// response.isSuccessful() 200ok 일때 코드
if(response.isSuccessful()){
//잘 받아 왔을 때, 실행할 코드 작성
} else if (response.code() == 400) {
// response.code() 는 HTTP 상태코드가 들어있다.
} else if (response.code() == 500) {
} else {
}
}
@Override
public void onFailure(Call<VideoList> call, Throwable throwable) {
// 네트워크 통신 실패
// 유저한테 알려주고, 로그 찍고 리턴
}
});
'Android Studio' 카테고리의 다른 글
[Android Studio] 네트워크로 form-data 보내는 방법 _ retrofit2 (0) | 2024.06.17 |
---|---|
[Android Studio] 화면 업데이트 하는 방법 _ ArrayList, like (0) | 2024.06.17 |
[Android Studio] 카메라, 앨범 앱 작동 시키기 _ 권한 설정, showDialog() (2) | 2024.06.14 |
[Android Studio] 시간 데이터를 자바 UTC에서 로컬 타임으로 변환 _SimpleDateFormat (2) | 2024.06.14 |
[Android Studio] 액션바 만들고, 해당 엑티비티에서 액션바 보이게 만드는 함수 _onCreateOptionsMenu(Menu menu) (2) | 2024.06.14 |