eunja511005 / AutoCoding

0 stars 0 forks source link

[중요] 모바일 & 서버 연계 #158

Open eunja511005 opened 8 months ago

eunja511005 commented 8 months ago

0. 결론

1. 출력 파라미터는 ApiResponse<Map<String, Object>>로 통일하여 다양한 오브젝트 리턴 가능 토록 한다.
2. 입력 파라미터는 통일 안하는게 더 나을거 같다.
  - 조회에는 페이지와 페이지별 사이즈 필요
  - 입력/업데이트에는 입력값 담은 DTO와 첨부 파일 처리를 위해 Multipart 사용
  - 삭제에는 패스 변수를 통해 id만 전달
3. /api/* URL에 대해서는 모두 헤더에 있는 토큰을 검증하여 보안 강화
  ※ 단, 토큰을 얻을 때는 아직 토큰이 없으므로 제외

image

 

1. 아이디어 조회 API 스펙 :

1. 호출 주소 : http://193.123.233.105:8080/api/idea/list

5. 입력 파라미터 : 
  1) @Header("Authorization") String authToken
    ※ /api/* URL에 대해 Filter를 통해 jwtToken 검증 하도록 하여 보안 강화
    ※ 이미지 보안 강화를 위해서도 사용하고 있음. 
        아무나 이미지 다운 받지 못하고 유효한 토큰을 헤더에 포함해야만 이미지 조회 가능.
  2) @Body IdeaListRequest ideaListRequest
    ※ IdeaListRequest : 
        private int page;
        private int size;

6. 출력 파라미터 :
  1) Single<ApiResponse<Map<String, Object>>>
    ※ <ApiResponse<Map<String, Object>>> 대신 ApiResponse<List<IdeaDTO>>를 사용하면 소스가 훨씬 간결해 지지만, 
        향후 확장성 고려하여 추가 파라미터를 있을 수 있으므로 List<IdeaDTO>로 한정 하지 않고 Map<String, Object>를 사용함.
    ※ Single은 복잡한 비동기 작업이나 여러 이벤트를 처리해야 하는 경우 유용
    ※ Call은 RxJava를 사용하지 않고도 사용할 수 있으며, 단순한 API 호출에 유용
    ※ ApiResponse<T> : 
        private boolean success;
        private String errorMessage;
        private T data;

7. Exception 처리 : 
  1) 인증서 오류 발생 시 : GlobalExceptionHandler에서 ApiResponse에 실패 응답 담아 리턴 

image

image

image

image

image

image

image

 

2. 아이디어 저장/업데이트 API 스펙 :

1. 호출 주소 : http://193.123.233.105:8080/api/idea

2. 입력 파라미터 : 
  1) @Header("Authorization") String authorization
  2) @Part List<MultipartBody.Part> files
    ※ 첨부 파일 이미지 전송, 여러 이미지 첨부 가능
  3) @Part("idea") IdeaDTO ideaDTO
    ※ 첨부 파일 이외 아이디어 데이터

4. 출력 파라미터 :
  1) Call<ApiResponse<Map<String, Object>>>

5. Exception 처리 : 
  1) 인증서 오류 발생 시 : GlobalExceptionHandler에서 ApiResponse에 실패 응답 담아 리턴 

image

image

image

 

3. 아이디어 삭제 API 스펙 :

1. 호출 주소 : http://193.123.233.105:8080/api/idea/{ideaId}

2. 입력 파라미터 : 
  1) @Header("Authorization") String authToken
  2) @Path("ideaId") String ideaId

3. 출력 파라미터 :
  1) Call<ApiResponse<Map<String, Object>>>

4. Exception 처리 : 
  1) 인증서 오류 발생 시 : GlobalExceptionHandler에서 ApiResponse에 실패 응답 담아 리턴 

image

image