API 수정과 Postman

웃음인·2026년 1월 16일

Java

목록 보기
37/37
post-thumbnail

Spring API에서 요청 파라미터를 기존에 String으로 받던 걸
배열로 받을 수 있도록 스펙 수정 == 요청 파라미터 타입과 내부 처리 로직 변경 !

1. Java VO 수정(String -> List)

🤔 배열인데 왜 String[]이 아닌 List일까?

Java에서 배열 타입은 String[] 이고 List<String>은 배열이 아니라 컬렉션 타입이다.
그치만 Spring API 문맥에서의 배열, 즉 Spring/Jackson 기준에서 JSON의 배열([])은
String[], List<string> 둘 다 가능하고,
실무에서는 String[]보다 List<string>으로 받는 경우가 더 많다고 한다.
그 이유는 아래와 같다.

1) JSON / Jackson 궁합

• List은 Jackson의 기본 타깃 타입
• 역직렬화 안정성 높음
• Validation 적용이 자연스러움

@NotEmpty
@Size(max = 10)
private List<String> values;

※ 배열(String[])은 검증 어노테이션 적용이 제한적임

2) 확장성과 유지보수성

• List는 크기 가변
• 추가, 제거, 필터링, 정렬이 바로 가능
• 배열은 실무에서 결국 List로 변환해서 쓰게 됨

Arrays.asList(arr); // 불필요한 변환 발생

3) 프레임워크 친화성

• Spring MVC
• Jackson
• Bean Validation
→ 모두 컬렉션(List) 중심 설계

배열 지원은 하지만 우선순위가 낮은 타입

👎 String[]의 실무적 한계👍 List의 실무적 장점
• 크기 고정• 크기 가변
• null 처리 번거로움• 컬렉션 API 즉시 사용 가능
• Stream 사용 불편• Stream, Validation, 가공 로직에 유리
• 가공 로직에서 List 변환이 반복됨• API 요청/응답 DTO에 적합

‼️ 결론
Spring API에서 “배열”을 받는다는 말은
대부분 String[]이 아니라 List<String>을 의미한다.
(String[]은 레거시 또는 명확한 제약이 있을 때만 사용)


2. ServiceImpl 수정

기존에는 String을 넣는 로직이었기 때문에 수정한 타입에 맞게 값 넣는 로직 수정

// 단일 String을 List로 감싸기
right.setRightHolder("포스트맨");
right.setRightHolder(Collections.singletonList("포스트맨"));

이렇게 API 요청 스펙을 변경한 후에 Postman이라는 도구로 수정사항을 테스트했다.


🔶Postman

Postman은 API 테스트를 위한 도구로
HTTP 요청 만들어서 서버로 보내고 서버가 준 응답을
그대로 보여준다. (클라이언트 역할 흉내)

Postman 사용 방법

사용 방법은 간단하다.

  1. 요청 하나 선택(GET, POST 중 아무거나)
  2. 내가 호출할 서버의 API 주소를 작성
  3. 상단 Header 탭 클릭
    - API에 따라 다르지만 나는 API Key 인증 때문에 헤더를 사용했다.
      (API Key를 Header로 받도록 설계)
  4. Key값과 발급 받은 API키를 입력
  5. Send 버튼 누르기

그럼 API가 잘 동작하는지, 리턴 값이 어떻게 생겼는지 바로 확인할 수 있다.


나는 소스 수정 전 포스트맨에서 문제점을 확인 후,
자바에서 소스를 수정한 뒤 다시 포스트맨에서 수정된 걸 확인했는데
수정 후 Postman에서 수정 사항을 확인하려면 서버 재기동 후 다시 Send를 해야한다.
왜냐면 404가 뜨거든.......... 지피티한테 서버를 끄지 않았는데 왜 404가 뜨는지 이유를 물었더니
핫리로드가 씹혀서일 가능성이 높다고 이야기 해줬다.
Postman은 요청만 던질 뿐 이 서버가 살아있는지 모르기 때문에 수정 후 저장,
서버 재기동을 꼭 해주자 !

0개의 댓글