//@통신 방식 ("통신 API명")
@GET("api/Login")
Call<LoginResponse> getLoginResponse(@Header("Authorization") LoginRequest loginRequest);
@GET : 바디 없이 URL에 모든 정보를 담아 요청한다. 서버에 데이터를 조회(Read, SELECT) 할 때 쓰며 @Query, @QueryMap 등의 Annotation과 함께 쓰인다.
@POST : 바디에 정보를 담아 요청한다. 서버에 데이터를 생성(Create, INSERT)할 때 쓰며 @Body, @SerializedName , @Field, @FieldMap (@FormUrlEncoded 경우) 등의 Annotation과 함께 쓰인다.
@PUT : POST와 마찬가지 방식으로 요청하나, 서버에 데이터를 수정(Update, UPDATE) 할때 쓰인다. POST 와 다르게 수정할 데이터의 경로를 @Path로 명시해야한다.
@DELETE : 데이터를 제거(Delete, DELETE)할 때 쓰이며 제거할 경로를 @Path 로 명시한다. 반환 DTO는 없고 삭제시 응답 코드 200으로 응답한다.
@HEAD : 헤더 정보를 조회한다.
@TRACE : 서버에 루프백 메시지 호출을 위한 테스트로 사용(클라이언트 서버 사이 프록시 서버에서 변경여부 확인시 사용)
@OPTIONS : 서버의 특정 URL에서 지원하는 메소드의 종류를 확인하는 용도, 요청 메소드 목록을 리턴하며 URL에 **** 기입시 서버 전체의 메소드를 확인
@ Path : 경로를 설정할때 사용하는 Annotation
요청 메소드 어노테이션 위에 추가로 명시
@FormUrlEncoded : form-encoeded 데이터로 정의한다. @Field Annotation을 통해 key-value 를 설정할 수 있다.
@Multipart : 주로 파일을 전송할때 사용한다. @Part Annotation으로 객체를 직렬화할 수 있게 돕는다.
@Headers : 메소드 어노테이션 상단에 정적헤더들을 정의할때 사용한다.
@Header : 함수 파라미터로 동적 헤더를 구성할때 사용한다.
출처 - https://full-stack.tistory.com/m/entry/Android-Library-Retrofit2-2-HTTP-Method