본문 바로가기
5.1 대외활동/Likelion(12기 세션자료)

[Eulji_LikeLion_2024_BackEnd] 3차 Q&A (의존성,api,git)

by Dohi._. 2024. 4. 4.
728x90

 Q3-1 devtools(의존성)을 추가하고싶어요

    1) Spring-boot-devtools

    2) 의존성추가

 Q3-2 API는 뭔가요? 그리고 api실습때 나온 { }는 뭔가요?

    1) API

    2) JSON

 Q3-3 GiT을 세션에 진행하셨는데 다시 알려주세요:)

    1) 환경설청

    2) 첫 업로드 

    3) 협업에 필요한 코드

Q 3-1. 의존성을 추가하고 싶어요

1) Spring-boot-devtools

의존성을 추가하는 법을 질문 하셨기때문에 devtools는 간단하게 넘어가겠습니다

 

참고용 링크:공식문서

devtools는 개발하는 경우에 매번 재시작을 하기 힘들고 귀찮다.

다양한 이유로 개발하는 경우에 많이 사용하는데 대표적으로 제공하는 기능은 아래와같습니다

  • Property Defaults
  • Automatic Restart : Classpath에 있는 파일이 변경되었을 경우 자동으로 어플리케이션을 재시작해준다.
  • Live Reload: 리소스 변경사항을 브라우저에 즉각 반영해준다.
  • Global Settings
  • Remote Applications

Intelij에서 자동 재시작 설정법

 Allow auto-make to stat even if developed application is currently running을 체크 후 (링크 사진참고)

자동으로 빌드가 되도록 설정해야 하기 때문에

Settings -> Build -> Complier에서 Build project automatically체크
그리고 OK를 눌러준다.

자바코드를 수정하면 자동으로 애플리케이션이 재시작되는 것을 확인할 수 있다.

 

2) 의존성추가

Java Spring 파일에 있는 bulid.gradle에 들어가줍니다

우리는 여기서 dependencies를 찾을 예정입니다

그후 추가할 의존성을 중괄호{ } 안에 넣어줍니다

우리는 devtools를 추가할 예정이기 때문에 아래와 같이 추가해줍니다

 

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'

	developmentOnly 'org.springframework.boot:spring-boot-devtools'//devtools추가


}

Q 3-2.  API는 뭔가요? 그리고 api실습때 나온 { }는 뭔가요? (작성중 할일 밀려서 추후 작성예정)

1) Api 

API(application Programming InterFace) : 표준화된 문법과 의사소통 방법을 사용하여 독립적인 시스템간의 상호소통, 데이터 교환과 같은 교류를 가능하게 하는 기술입니다.

 

API를 주로 사용하는 것은 지도api, 날씨api, 카카오로그인api등이 있습니다.

해당 정보가 필요할 때 실시간으로 호출을 하면 정보를 제공해줍니다.

사용자는 호출할 프로그램의 내부를 알 필요 없이 설명서따라서 진행하면 제공을 받습니다.

여기서 알 수 있는 특징은

1. 구현방식을 자세하게 몰라도 된다

알면 좋겠지만 자세하게 몰라도 사용은 가능하다

2. 설명서가 제공이 된다.

api를 제공하는 제공자는 사용 방법을 제공합니다

3. 제작자가 있기에 제약이 존재할 수있다

당연한 소리지만 제작자가 만든 서버에서 제공하기 떄문에 제약이 존재할 수있고 유료 무료일 수도 있습니다.

 

 

API의 작동 방식은 다음과 같습니다.

  1. 클라이언트 애플리케이션에서 정보를 가져오기 위해 API 호출을 시작합니다. 이를 요청(request)이라고도 합니다. 애플리케이션에서 웹 서버로 전달되는 이 요청은 API의 URI(Uniform Resource Identifier)를 사용하여 처리합니다. 여기에는 요청 동사, 헤더, 경우에 따라서는 요청 본문도 포함됩니다.
  2. API는 유효한 요청을 받으면 외부 프로그램이나 웹 서버에 호출합니다.
  3. 서버가 API에 응답하면서 요청받은 정보를 보냅니다.
  4. API가 원래 요청했던 애플리케이션에 데이터를 전송합니다.

 

그럼에도 API를 사용하는 이유

개발 비용(시간,비용) 단축

직접 구축하는 것보다 api를 이용해서 호출하는 것이 개발 시간과 비용부분에서 저렴합니다 

당연하게도 개발 시간은 비용과 직결되기 때문에 빠르게 개발을 할 수 있다는 것은 개발비용 절감 효과가 있습니다.

 

보안성

api를 통해 제공하는 것 말고 만약 직접 데이터베이스에 접속하게 하는 경우에는 보안성이 문제가 생길 수 있기 때문에

api를 이용하여 접속하는 것이 좋습니다.

 

API의 대표적인 프로토콜에 따른 종류

 

SOAP API ( Simple Object Access Protocol API)

Soap API는 단순 객체 접근 프로토콜을 사용합니다. 클라이언트와 서버는 XML을 사용하여 메시지를 교환합니다. SOAP API를 사용하면, 서로 다른 환경에서 실행 중이거나 서로 다른 언어로 개발된 애플리케이션이나 소프트웨어 컴포넌트 간 정보 공유가 더욱 수월해집니다. 최근에는 잘 사용 되지 않는 유연성이 떨어지는 API이다

RPC API

RPC API를 원격 프로시저(RPC) 호출이며 XML을 사용하냐 JSON을 사용하냐 에따라 XML-RPC, JSON-RPC로 불립니다. 클라이언트가 서버에서 함수나 프로시저를 호출하고(여러 개의 매게변수가 포함될수 있다) 서버가 출력(결과는 한개)을 클라이언트로 다시 전송합니다.

 

Websocket API

Websocket API는 JSON 객체를 사용하여 데이터를 전달하는 또 다른 최신 웹 API 개발입니다. WebSocket API는 클라이언트 앱과 서버 간의 양방향 통신을 지원합니다. 서버가 연결된 클라이언트에 콜백 메시지를 전송할 수 있어 REST API보다 효율적입니다.

 

REST API( Representational State Transfer API)

오늘날 웹에서 볼 수 있는 가장 많이 사용되고 웹 API아키텍처 원칙의 모음이라고 불립니다. 클라이언트가 서버에 요청을 데이터로 전송합니다. 서버가 이 클라이언트 입력을 사용하여 내부 함수를 시작하고 출력 데이터를 다시 클라이언트에 반환합니다.  추후 세션에서 REST API가 되기 위한 아키텍처와 관련된 특정 제약조건에 대해서 한번 배워보도록하겠습니다

 

 

API의 대표적인 공개형태

 

private API

private API는 기업 내부에서만 사용가능하고 외부로는 공개를 하지않습니다. 즉, 비즈니스 내에서 시스템과 데이터를 연결하는 데만 사용됩니다.

public API 

public API는 일반에 공개되며 누구나 사용할 수 있습니다.

partner API 

사용 계약을 맺은 파트너만 사용할 수있다.

 

 

+composite api

복합 API는 두 개 이상의 서로 다른 API를 결합하여 복잡한 시스템 요구 사항이나 동작을 처리

 

2) JSON

JSON( JavaScript Object Notaiton) /XML(eXtensible Markup Language)는 브라우저와 서버 간의 자료를 통신할때 사용하는 표준화된 데이터 표준입니다.

 

간단하게 살펴보겠습니다.

 

XML 

확장이 가능한 마크업 언어이다. 즉 마크업언어라고 하면 HTML이라고 생각이 날텐데 HTML에서도 종일하게 사용이 가능하다

XML은 HTML과 동일하게 생겼지만 데이터를 보여주지 않고 전송하는것이 주목적이다.

 

예시

<root>
<man>
    <name>을지</name>
    <age>32</age>
    <hobbies>멋사</hobbies>
    <hobbies>코딩</hobbies>
</man>
<man>
    <name>도히</name>
    <age>99</age>
    <hobbies>요양</hobbies>
    <hobbies>놀기</hobbies>
</man>
</root>

 

JSON

자바스크립트의 객체 문접을 사요아는 데이터 포맷으로 XML의 단점을 해결하기 위해 고안된 데이터 형식으로 KEY와 Value의 쌍으로 이루어져있다.

예시

{
    "man": [
        {
            "name": "을지",
            "age": 32,
            "hobbies": [
                "멋사",
                "코딩"
            ]
        },
        {
            "name": "도히",
            "age": 99,
            "hobbies": [
                "요양",
                "놀기"
            ]
        }
    ]
}

 

JSON vs XML 

구분  JSON XML
속도 빠름 느림
길이 짧다 길다
안정성 낮다 높다
보안성 XML보다 안전 JSON보다는 조금 불안전
인코딩 UTF-8 다양한 인코딩 지원
파일크기 적음

Q 3-3. Git을 세션에진행하셨는데 다시 알려주세요:)

1) 환경설정

git bash에서 진행합니다

 

   (1) 이름 설정

git config --global user.name "사용할 이름(영어)"



   (2) 이메일 설정하기

git config --global user.email "가입한 이메일"

 

   (3) 자신이 입력한 정보확인

git config --list

   이름과 이메일이 잘 입력되었는지 확인해주세요

2) 첫 업로드 

 

해당 파트부터는 intellij에서 실시합니다 

하단 intellij의 왼쪽하단에서 터미널 -> Git Bash를 키고 여기서 진행하겠습니다.


  (1)초기화

git init

  (2) 업로드 파일 선택(우선 전체파일)

git add .

 위에는 모든 파일 (.) 을 업로드 하겠다 .

 아래는 test.java를 업로드 하겠다.

git add test.java





커밋 등록-   파일의 변화를 깃 레포지토리에 영구적으로 기록하는 행위

git commit -m "first commit"


-m 은 메세지로써 "first commit" 를 기록을 남겼다라는 의미이다 " "안에 내용은 자유다 바꿔도 된다 

Github repository연결

git remote add origin 깃허브주소


잘 연결됬는지 확인- 연결이 잘되었는지 주소를 비교

git remote -v


Push(업로드)

git push origin master


※ 자신이 아래사진이 main이라면 git push origin main

 

그이후로는 


git add .
git commit -m "first commit"
git push origin master
이것만 사용하게 될예정이다.


3) 협업에 필요한 코드

 

- 파일 다운로드

저장할 폴더에서 우클릭후 Open Git Bash here을 눌러준다


git clone 깃허브주소

-> 저장할 폴더에 깃파일이 다운로드 되어진다

git clone 깃허브주소 파일이름(=주소)

-> 지정한 파일에 깃파일이 다운로드 된다

 

협업할 때는 브렌치를 만들고 

그후에 거기에 업로드를 진행하게 됩니다 

 

브렌치를 만들고 -> 브렌치에 업로드 하는법을 알아 보겠습니다.

 

(1)Github에서 내 브렌치(branch)만들기
git checkout -b 브렌치이름


(2)내 브렌치에 소스코드 업데이트하기

git add .
git commit -m "first commit"
git push origin 브렌치이름

 

+ 추가 지식

마스터(메인) 브렌치에 소스 가져오기(pull)
git pull origin master  / git pull origin main
pull을 하기전에는 기존에 소스코드들을 커밋을 먼저 해놔야 한다 

왜냐하면 pull 을 실행하면, 원격 저장소(깃허브)의 내용을 가져와 자동으로 marge(병합)을 실행하게 된다.

그러나 단순히 원격 저장소의 내용을 확인만 하고 로컬 저장소와 marge를 하지 않고 싶을 떄 fetch 명령어를 사용한다.


브렌치끼리 이동하는 법
git checkout 브렌치이름



이 글은 을지대학교 백엔드 세션 강의를 위해 제작된 게시글입니다 
언제나 조언부탁드립니다

 

 

728x90

댓글