| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- 네트워킹데이
- oh-my-zsh
- 순차탐색
- 오블완
- mysql 표 출력
- zsh theme
- mycli
- 스터디2기
- zsh
- table status
- Less
- cs
- 인프런
- VI
- 티스토리챌린지
- 동적 프로그래밍 방법
- 맥
- 욕심쟁이 방법
- spring boot
- 인프런워밍업클럽
- 이진탐색
- 분할정복 방법
- MySQL
- 오일러 경로
- 알고리즘
- 터미널
- mysql 표
- CS스터디
- Pager
- 데이크스트라
- Today
- Total
Develop
11일차_IO class, Gemini API KEY 발급 및 Postman 테스트, HTTP 본문
안녕하세요!
데브코스 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(출력 스트림) 계열
- 바이트 기반 스트림 스트림 (IO Stream) -> 파일, 네트워크, 메모리에서 byte 데이터를 다룸
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 테스트하는 방법

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 프로젝트에 적용
이 부분은 길어지기 때문에 나중에 자세히 포스팅 하겠습니다.
그럼 이만... 오늘도 고생하셨습니다.

'백엔드 > KDT_Programmers' 카테고리의 다른 글
| 13일차_SQL(table, DB type, SQL 문법(select~join)) (0) | 2025.03.25 |
|---|---|
| 12일차_MySQL, DBeaver 설치, DB 이론, Java 프로젝트에서 .env 파일 적용하기(feat. 나름 딥다이브) (0) | 2025.03.20 |
| 10일차_디자인패턴, 디미터법칙, IO, FileIO (0) | 2025.03.18 |
| 9일차_Lambda, Record, Stream, Optional, Reduce 등 (0) | 2025.03.18 |
| 8일차_Set, Map, Stack, Queue 등 (0) | 2025.03.14 |