Develop

11일차_IO class, Gemini API KEY 발급 및 Postman 테스트, HTTP 본문

백엔드/KDT_Programmers

11일차_IO class, Gemini API KEY 발급 및 Postman 테스트, HTTP

230801 2025. 3. 19. 01:49

 

안녕하세요!

 

데브코스 11일차 (3주 2일차) 입니다.

오늘은 어제에 이어 Java IO class 를 더 살펴봤고, Google Gemini API 를 이용해서 프로젝트에 LLM 을 붙이는 작업을 했습니다. (물론 강사님이 하시고.. 저는 클론) HTTP 이론도 잠깐 했고요.

 

오늘은 어쩐일로 수업 중반부까지 잘따라갔는데,

그 생각하자마자 갑자기 어려워지고 속도가 빨라지고 ..패키지도 클래스도 엄청많이 만들고... 케게겍 !

그래도 다른날 보다는 재미있었습니다. 코드치고 시간이 남으면 다른 수강생들 질문에 답도 달아보고 약간 자존감 업 됨 ㅋ

 

 

IO는.. 클래스 마다 이름이 비슷한데.. 또 기반이 나뉜다고 하고 헷갈렸는데요 

개념을 좀 짚고 넘어가야겠습니다!

 

 

 

공부 내용

 

I/O

  • Input과 Output의 약자로 입력과 출력을 의미
  • 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는것을 말함
  • Java IO class는 크게 2가지 기반으로 나뉜다.
    • 바이트 기반 스트림 스트림 (IO Stream) -> 파일, 네트워크, 메모리에서 byte 데이터를 다룸
      • InputStream(입력 스트림)  계열
      • OutputStream(출력 스트림) 계열
    • 문자 기반(Reader, Writer) -> 한글, UTF-8 등의 문자(Character) 데이터를 다룸
      • Reader(입력 스트림 계열
      • Writer(출력 스트림) 계열

 

 

PrintStream vs PrintWriter

  • PrintStream
    • 바이트 기반 스트림
    • System.out.println() 할 때 사용
    • 자동으로 flush()가 호출됨(즉, 출력이 즉시 반영됨)
      • flush() : Buffer에 남아 있는 데이터를 강제로 출력하는 역할을 하는 메서드
  • PrintWriter
    • 문자 기반 스트림
    • PrintStream 보다 텍스트 출력에 최적화 됨
    • 파일이나 네트워크로 텍스트 데이터를 보낼 때 적절함
    • flush()를 명시적으로 호출해줘야 즉시 반영됨(autoFlush 옵션도 있음)

 

 

 

ByteArrayIO

  • 바이트 기반 스트림
  • 메모리(바이트 배열)를 대상으로 입출력을 수행하는 스트림
  • 파일이나 네트워트가 아닌, 메모리에서 데이터를 읽고 쓰는 경우 사용
  • 입출력이 빠르며, 중간 데이터를 처리할 때 유용함
  • 주로 서버 구현시 소켓에서 데이터를 읽어올 때 사용됨

 

 

 

FilterStream

  • IO Stream을 Wrapper 클래스로 감싸서 추가 기능을 제공하는 보조 스트림
  • 데이터를 변환하거나 성능을 향상시키는데 사용됨
  • 대표적인 디자인 패턴인 데코레이터 패턴을 사용

 

 

properties

  • 외부 설정파일(.properties)을 읽고 쓰는데 사용되는 java class
    • 주로 .properties 파일이나 XML 파일에서 설정을 불러올 때 사용됨
  • Hashtable<String, String> 을 상속받아서 동작 → Map의 일부기능 제공
    • key-value 형태로 String 데이터를 저장 (Map<String, String> 형태)
  • 파일을 수정하면, 코드 수정없이 동작을 변경할 수 있음
  • 사용자가 직접 설정해야하는 설정파일, 환경변수, DB연결 정보(암호, 특정 IP 등) 저장 가능

 


 

 

Google Gemini API KEY 발급 및 Postman으로 API 테스트하는 방법

 

 

  1. API KEY 발급
    https://ai.google.dev/gemini-api/docs/api-key?hl=ko

 

 

 

 

 

 

2. 공식문서 확인

Java는 아래코드를 이용해서 POSTMAN 으로 API 를 설정해줍니다.

 

  curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${GEMINI_API_KEY}" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }'

 

 

 

3.  Postman 설정

     1) New Request 생성

         Collections ->  "+" 버튼으로 New Collection 생성  -> 우클릭 -> Add request 클릭

 

 

 

   2) params 설정

       HTTP Method를 POST 로 설정

       -> 공식문서 코드에서 curl 복붙(맨 뒤에 API KEY는 본인걸로 넣어주세요)

       -> 아래 Query Params 에 Key-value 입력 (value는 API KEY)

 

    

 

 

3) Headers 설정

     맨 아래 칸에 공식문서의 Content-Type 과 application/json 입력

 

 

4) Body 설정

     raw(json) 클릭 -> 공식문서의 json 붙여넣기 ->  send → 답변 출력됨

    * Send 가 안될 때는

       -> Params, Headers, Body에 복붙하면서 "", '' , / 등 따옴표가 있는지 확인해주세요. 없어야 합니다~

       -> Params에서 curl 입력할때 맨 마지막에 본인의 API KEY를 입력했는지 확인해주세요.

       -> Body에서는 raw 타입이 맞는지 확인해주세요.

 

 

 

4.  Java 프로젝트에 적용

이 부분은 길어지기 때문에 나중에 자세히 포스팅 하겠습니다.

 

 

 

그럼 이만... 오늘도 고생하셨습니다.