Retrofit Get과 Post

Happy Jiwon·2023년 4월 28일
1

Android

목록 보기
6/13

Get과 Post

Get과 Post는 데이터 전송 방식이 다르다. 이번 포스팅에서는 Get과 Post의 데이터 요청/전송 방식이 어떻게 다른지 소개하겠다.

Get 방식

GET 방식은 클라이언트가 서버로 데이터를 요청하기 위해 사용되는 Method이며, 요청시 Body 부분은 비어있고 Header에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드도 적지 않는다.

아래와 같이 URL뒤에 쿼리 스트링(Key와 Value)을 붙이고 HTTP 패킷의 헤더에 포함해서 서버에 데이터를 요청한다.

http://localhost:3000/login?id=user&pw=1234
  • 데이터를 요청할 때 요청하는 데이터가 HTTP Requset MessageHeader 부분의 URL에 담겨서 전송된다.
  • 요청 시 URL상에 ? 뒤에 데이터가 붙어 request를 보내는 것이다.
  • POST 방식보다 상대적으로 전송 속도가 빠르지만 보안에 취약하다.
RetrofitApiManager.getInstance().requestUserCall(UserPreference.getUserId(context), UserPreference.getUserPassword(context), new RetrofitInterface() {
	@Override
    public void onResponse(Response response) {
        Log.d("TAG", "response : " + response);
        if (response.isSuccessful()) {
            UserResponse userResponse = (UserResponse) response.body();
            if (userResponse != null) {
                Log.d("TAG", "userResponse :" + userResponse.getResult());
            } else {
                Log.d("TAG", "userResponse is null");
            }
        } else {
            Log.d("TAG", "userResponse is not successful");
        }
    }
    
    	@Override
    	public void onFailure(Throwable t) {
        Log.d("TAG", "userResponse :" + t.toString());
    	}
    });
- 인자 2개 넣어서 보기 좋게 나타냄
- 로그인 아이디, 암호화 된 비밀번호 서버에 넘기기 → 서버에서 복호화 하여 맞는지 확인 → 맞으면 로그인

GET 방식 경우에는 브라우저마다 글자 수 제한이 있기 때문에 게시판의 게시물, 목록 조회와 같은 간단한 데이터 요청할 때 적합하다.


Post 방식

POST방식은 클라이언트가 서버로 데이터를 전송해 리소스를 추가하거나 생성하기 위해 사용되는 Method 이며, POST 요청 시 HTTP 패킷의 Header에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드를 포함하고 HTTP 패킷의 Body에는 데이터를 담아서 서버로 전송합니다

  • Header 부분에 데이터를 담는 GET 방식과 다르게 Body 부분에 데이터를 담아 전송한다.
  • 제한적인 크기, 보안의 측면에서 GET 방식보다 나음
  • 서버의 값이나 상태 등을 변경하기 위해 사용
CommonRequest model = new CommonRequest();
model.setId(userId);
model.setPw(userPw);

RetrofitApiManager.getInstance().requestLoginUserInfo(model, new RetrofitInterface() {
	@Override
	public void onResponse(Response response) {
		if (response.isSuccessful()) {
			LoginResponse loginResponse = (LoginResponse) response.body();
				startLogin(loginResponse);
		} else {
			Log.d("TAG", "userResponse is not successful");
		}
	}

	@Override
	public void onFailure(Throwable t) {
		Log.d("TAG", "loginResponse :" + t.toString());
	}
});
- GET 방식은 URL 뒤에 Body를 넣고,
- POST 방식은 URL 안에 넣기 때문에 POST 방식의 보안이 더 높음

POST 방식의 경우 보통 서버의 값이나 상태를 변경하기 위해 사용되므로 글쓰기, 글 수정과 같은 작업에 적합하다.

profile
공부가 조은 안드로이드 개발자

0개의 댓글