전체 글 123

[HTTP 웹] 5. HTTP 메서드 활용

HTTP 메서드 활용 클라이언트에서 서버로 데이터 전송 HTTP API 설계 예시 클라이언트에서 서버로 데이터 전송 클라이언트에서 서버로 데이터를 전송하는 방식은 크게 2가지가 있다. 쿼리 파라미터(?)를 이용한 데이터 전송과 메시지 바디를 통하여 전송하는 방식이 있다. 전자인 쿼리 파라미터 방식은 GET메서드를 통하여 URI에 쿼리 파라미터를 붙여 KEY-VALUE 형식으로 데이터를 보내며 주로 정렬 필터(검색어)를 사용할 때 사용한다. 후자인 메시지 바디를 통한 방법은 POST, PUT, PATCH가 해당되며 주로 회원 가입, 상품 주문, 게시글 등록, 수정과 같은 곳에 사용된다. 이렇게 2가지 방법을 통해서 다양한 상황들이 연출되는데 예시를 통해 알아보자. 정적 데이터 조회 - 이미지, 정적 텍스트..

[HTTP 웹] 4. HTTP 메서드

HTTP 메서드 만들기 만약 회원에 대한 CRUD 요구사항에 따라 URI를 만들게 된다면 다음과 같이도 만들 수 있을 것이다. 회원 목록 조회 : /read-member-list 이렇게 만드는 것이 좋을까? RESTFUL api에 대해서 알고 있는 나는 좋지 않다고 생각할 것이다. 왜 일까? API URI 고민 해보기 URI를 정의함에 있어 가장 중요한 것은 리소스이다. 이전 글에서 URI를 설명함에 있어 리소스를 식별하는 통합된 방법이라고 정의했다. 우리는 리소스를 얻기 위해 접근하기 때문이다. 그렇다면 리소스의 의미는 뭘까? 단순히 회원을 등록하고 수정하고 조회하는 CRUD 과정이 리소스인 것이 아니라 회원이라는 개념 자체가 리소르를 의미한다. 더 나아가 리소스는 어떻게 식별하는 것이 좋을까? 이에 ..

[HTTP 웹] 3. HTTP 기본

모든 것이 HTTP HTTP : HyperText Transfer Protocol HTTP는 하이퍼텍스트(문서간의 링크)를 통해 이동하는 html을 전송하는 프로토콜로 시작을 했다. 하지만, 현재는 이미지, 영상, 음성 등 모든 형태의 데이터를 HTTP로 전송이 가능하다. HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터! 심지어는 서버간의 데이터를 주고 받을 때도 HTTP를 사용한다. HTTP 역사 HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더 X HTTP/1.0 1996년: 메서드, 헤더 추가 HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전 RFC2068 (1997) -> RFC2616 (1999) -..

[HTTP 웹] 2. URI와 웹 브라우저 요청 흐름

URI란? URI란 Uniform Resource Identifier의 준말로 리소스를 식별하는 통합된 방법을 의미한다. 개발을 하다보면 URI이외에도 URL, URN 등 비슷한 의미로 쓰이는 다양한 단어들을 만나게 된다. 실제로 본인도 매번 검색을 했었다. 어떤 차이가 있는가? ietf에 이 스펙이 정리가 되어있다. URI는 로케이터(Locator), 이름(Name) 또는 둘 다추가로 분류될 수 있다. - Uniform Resource Identifier (URI) 문서 표준 스펙 즉, URI는 로케이터와 이름으로 분리되며 도식화 해보면 다음과 같을 것이다. URL은 Resource의 위치를 정의한 반면, URN은 이름으로 정의해놓고 통신할 때 이름으로서 찾는 것을 말한다. 표준스펙의 example을..

[Github] 개발자 Github Profile 정리 팁

오늘은 계속 미루어왔던 깃허브 프로필을 정리해보려고 한다. 다른 분들의 이력서와 기술 스펙들도 구경하면서 나의 현위치를 파악할 겸 정리해두면 좋을 것 같다. GitHub에는 여러 이스터에그가 있는데, 다음과 같이 깃허브 이름과 같은 이름으로 Repository를 만들게 되면 special한 repository를 만들 수 있다. :) 이 레포지토리를 통해 우리는 좀 더 개발자스러운 github Overview 탭에 profile을 꾸밀 수 있다! 본인 이름으로 저장소 만들기 위에서 보았던 것처럼 본인의 이름으로 먼저 저장소를 만들고 readme.md 파일에 정리를 하게 되면 overview 탭에서 해당 정리 글을 확인할 수 있다. 이제 우리는 나의 저장소에 내 정보를 수정하고 꾸미게 되면 간단하게 내 소개..

Web Dev 2022.10.25

[HTTP 웹] 1. 인터넷 네트워크

인터넷 통신 인터넷 통신은 local 망의 클라이언트 - 서버 간의 통신과는 다르다. 인터넷이라는 공용망을 통해서 클라이언트에서 서버로 통신을 보내야한다. 인터넷은 수 많은 node로 이루어져 있는데 그 중 내가 원하는 목적지로 이동하기 위해 또한, 안정적인 통신을 위해 특정 규칙을 통해 송수신을 하게 된다. 이 때 이해해야 하는 것이 IP(인터넷 프로토콜)이다. IP(인터넷 프로토콜) 먼저 인터넷 통신을 하기 위해서는 클라이언트 서버 모두가 IP 주소를 부여받아야 한다. 지정한 IP 주소(IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 패킷 정보가 가지고 있는 데이터 출발지 IP 목적지 IP 패킷이 인터넷 망의 많은 노드를 지나가면서 정해진 통신 규약을 따라 ..

[JPA이론] 11. 객체지향 쿼리 언어2 - 중급 문법

경로 표현식 경로 표현식은 JPQL문 내부에서 객체에 점을 찍어 객체 내부의 필드를 그래프 탐색할 수 있는 방식을 말한다. 경로 표현식에서 사용할 수 있는 필드는 다음 두 가지, 상태 필드와 연관 필드로 분류할 수 있다. 상태 필드(state field): 단순히 값을 저장하기 위한 필드이다. ex) m.username - 멤버 객체의 이름 연관 필드(association field): 연관관계를 위한 필드를 말한다. 단일 값 연관 필드: @ManyToOne, @OneToOne, 대상이 엔티티(ex: m.team) 컬렉션 값 연관 필드: @OneToMany, @ManyToMany, 대상이 컬렉션(ex: m.orders) 위와 같은 분류에 따라 JPA에서 경로 표현식을 사용할 수 있다. 단순히 값을 저장하..

[cote] 프로그래머스 - 이상한 문자 만들기

문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 입출력 예 s return "try hello world" "TrY HeLlO WoRlD" First Try 실패~~~ public String solution(String s) { String answer = ""; String[] sArr = s.split(" "); for (i..

카테고리 없음 2022.10.22

[JPA이론] 10. 객체지향 쿼리 언어1 - 기본 문법

소개 JPA는 다양한 쿼리 방법을 지원하는데 그 예시로는 JPQL, JPA Criteria, QueryDSL, 네이티브 SQL 등의 방식이 있다. 앞의 3개는 자바코드로 JPQL을 짜주는 클래스의 집합이라고 이해하면 된다. 이외에도 JPA와 함께 JDBC API 직접사용, MyBatis, SpringJdbcTemplate 함께 사용 하는 방법 등이 있는데 Hibernate의 창시자 개빈 킹의 말, `모든 문제를 해결하기 위해 제작된 것이 아니다.` 처럼 필요시 ORM이 가능한 다양한 방법을 사용하면 된다. 오늘은 이 중 JPQL을 사용하는 방법을 정리해보려고 한다. JPQL JPQL의 가장 단순한 조회 방법은 EntityManager의 find() 메서드를 통한 방법이다. 이를 통해 받아온 객체를 그래프..

[JPA이론] 9.값 타입

기본값 타입 JPA는 데이터 타입을 크게 2가지, 엔티티 타입과 값 타입으로 분류한다. 엔티티 타입은 `@Entity`로 정의하는 객체를 말하며 데이터가 변해도 식별자로 지속해서 추적이 가능하다. 예를 들어 회원 엔티티의 내부 속성이 모두 변하더라도 식별자는 그대로기 때문에 변경을 추적할 수 있고 회원 엔티티 임을 알 수 있다. 그에 반해 값 타입은 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체를 말하며 식별자가 존재하지 않아 엔티티와 달리 추적이 불가능하다. 아래 [1]은 [2]로 아예 대체 되는 것이다. int aHundred = 100---[1] aHundred = 200---[2] 값 타입 값 타입은 다시 3가지, 기본값 타입, 임베디드 타입, 컬렉션 ..