묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
Location 헤더와 Content-Location
안녕하세요. 강사님. 해당 HTTP 수업과 강사님의 스프링, JPA 수업들을 들었던 상태로 드디어 직접 게시판 REST API 프로젝트를 진행하기 위해 API 명세를 작성해 보면서 검색하던중에 한가지 의문이 생겼습니다. 강사님께선 POST 요청에 대한 201 Created 응답을 할 때, Location 헤더에 생성된 자원의 주소를 포함해서 응답하는걸로 알려주셨는데, 구글링해서 본 글 중 아래와 같은 글을 보았습니다. "따라서 요청의 응답 헤더에 새로 생성된 리소스를 식별할 수 있는 Content-Location 속성을 이용한다. 출처: https://sanghaklee.tistory.com/57 [이상학의 개발블로그]" 강의 내용과 달라서 구글에 영문으로 검색해 보았는데, 영어로봐도 모르겠고 한글로 번역해서 봐도 이해가 잘 안가서 질문드립니다.구글링 결과로 Content-Location 헤더는 반환된 데이터에 대한 대체 위치를 가르킨다고 하고,Location 헤더는 리다이렉션의 대상을 가르킨다고 하고 있습니다... 같은말을 다르게 설명하는느낌입니다. 그런데 Location과 Content-Location은 다르다고합니다.만약 유저 정보를 POST 요청으로 등록한다고 하면 반환된 데이터는 서버에 저장된 데이터이고, 이것에 대한 위치라는 말과 리다이렉션 대상이라는 말은 같은말 아닌가요?ㅜㅜ Content-Location 헤더는 강의 내용에도 있는 콘텐츠 협상시에 쓰인다는 말이 나오는 것 같은데, 그러면 블로그의 정보가 틀린건가요??? 아래는 영어 원문과 번역된 내용입니다... 감이 안잡히네요The Content-Location header indicates an alternate location for the returned data. The principal use is to indicate the URL of a resource transmitted as the result of content negotiation. Location and Content-Location are different. Location indicates the URL of a redirect, while Content-Location indicates the direct URL to use to access the resource, without further content negotiation in the future. Location is a header associated with the response, while Content-Location is associated with the data returned. This distinction may seem abstract without examples. ======================================================= Content-Location헤더는 반환 된 데이터의 대체 위치를 나타냅니다. 주요 용도는 콘텐츠 협상 의 결과로 전송되는 리소스의 URL을 나타내는 것 입니다. Location그리고 Content-Location다릅니다. Location리디렉션의 URL을 Content-Location나타내고 향후 콘텐츠 협상없이 리소스에 액세스하는 데 사용할 직접 URL을 나타냅니다. Location응답과 연관된 헤더이고 Content-Location리턴 된 데이터와 연관됩니다. 이러한 구분은 예 없이 추상적으로 보일 수 있습니다 . 추가적으로, GET /users 같은 컬렉션이 반환되는 경우, 정상적으로 처리가 되었지만 데이터가 아무것도 없는 경우엔 200응답으로 빈 내용을 응답할지, 404에러로 응답할지 구글링 해보면 관점에따라 의견이 갈리던데, 강사님께서는 이러한 경우에 200을 사용하시는지 404를 사용하시는지 궁금합니다.
-
미해결누구나 시작할 수 있는 네트워크 Step 2 (서브넷팅)
5강 NAT 강의 중 공인 아이피가 한개 일때 질문입니다.
안녕하세요. 궁금한 점이 있습니다. 만약 공인 아이피가 한 개 일때 저와 동생이 동시에 네이버 페이지를 열었다고 했을때 제가 쓰는 사설 아이피는 공인 아이피로 변환되어 네이버로 갈것이고. 이때 라우터는 공인아이피를 제 사설 아이피로 셋팅을 하고 있다고 이해를 했는데요. 그래야 돌아오고 나서 제 피씨로 찾아 들어 올테니까요.. 그럼 동생은 비어있는 공인 아이피가 없으니 제 컴퓨터에서 네이버로 결과를 받을때까진 사용 할수 없는 건가요? 라우터가 사설 아이피를 삭제하는 구간이 언제인지 궁금합니다. 보내고 어딘가 저장하고 지우는건지. 보내고 돌아올때까지 기다리고 있는건지..
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
대용량 트래픽 서버 증설시 궁금증
안녕하세요 강의 들으면서 궁금한게 생겼습니다. 같은 시간에 대용량 트래픽이 발생하는 경우 stateless로 설계된 요청은 서버를 확 증설해서 대응이 가능하다고 하셨습니다 1. 접속량이 많은 경우 대기열을 부여하는 경우가 많이 있는데, 서버가 여러 대를 사용할 때 대기인원의 순서 동기화?가 어떻게 이루어지는지 궁금합니다. 2. 로직을 처리하는 서버는 여러대여도 중심 DB는 하나일 것 같은데(완전히 제 추측입니다! 아니라면 알려주세요) 트랜잭션을 할 때 병목이 발생하지 않나요?? 제가 모호하게 이해하는 부분이 많은 것 같습니다 ㅜㅜ 강의 정말 잘듣고 있습니다 답변 주시면 감사하겠습니다!!!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
리소스 식별 URI 설계 시, 단수 복수
PPT 내용에 보면 회원 목록을 조회할 때는 복수로 조회하는 게 맞지만, 단일 회원 조회, 등록, 수정 삭제는 단수를 써주는게 덜 헷갈리지 않을까요? 다 복수로 쓰는 이유가 있나요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
POST 요청에 멱등성 적용에 대하여
최근에 결제관련 개발을 하던중에, 클라이언트사의 강력한 요청으로 POST 요청에 대해서 멱등성(Idempotency)을 보장해준 경우가 있었는데요. 클라이언트사의 특수한?(실제 사유는 설명해주지 않음) 환경으로 인해, 동일한 요청이 중복해서 발생할 수 있기 때문에, 요청 Body내용이 완전히 동일한 경우에는 두번이든 천번이든 동일하게 응답 해달라는 요구가 있었습니다. 물론 POST 요청으로 인해서 일어나는 비즈니스 로직은 수행하지 않고 동일 응답만 달라는 요구사항이었는데요. 이런 경우엔 POST에도 멱등성이 적용된 것으로 봐야할까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
도메인 이름과 호스트 이름
안녕하세요 강사님 질문있습니다! URL 문법 장표에서 www.google.com은 호스트명이라고 하였는데 이는 도메인명하고 같다고 보면 되나요? 호스트명하고 도메인명은 엄밀하게 다르면서 같은 느낌인건가요? 구글링을 해봐도 헷갈려서 질문합니다! 감사합니다 :)
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
patch 상태코드 관련 질문
항상 양질의 강의 감사드립니다. patch를 사용해 부분적으로 수정을 하는 로직을 수행할 경우에 상태코드로 200, 201중 어느 것이 더 적절할지 궁금증이 생겨 질문을 남깁니다! 감사합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
현업이 궁금합니다.
안녕하세요 좋은 강의 너무 잘 듣고 있습니다. 저는 실무에서 be 개발을 맡게된 초보 개발자입니다. api 설계를 하다보면 어려울때가 많더라구요 예를 들면 PATCH(PUT)로 넘길때 키 값을 PathVariable /aaa/{key} 형식으로 넘기게 할것인지 아님 body에 넣게 할것 인지 또는, GET으로 가져올때 PathVariable /aaa/{key} 형식으로 넘기게 할것인지 requestParam으로 넘기게 할것인지 등등 항상 명확한 기준이 없어 이게 맞나? 하는 의구심이 듭니다. 네이밍도 너무 어려워서 항상 고민이구요... rest api로 검색해서 블로그를 찾아봐도 상투적이고 일반적인 내용 뿐이라 실제 업무에 다 커버하기 힘들더라구요 혹시 관련해서 공부를 좀 하고 싶은데 추천할만한 사이트나 책이 있을까요?? 실제 현업에선 어떤 기준으로 개발하고 계신가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
실행시 자동으로 실행된다고 하셨는데
해당 방법은 디버그시 알아서 배치 파일을 열어준다는 의미인가요? 그렇다면 어떻게 할 수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 선생님 Thread.Yeild(); 에 대해서 질문 합니다.
while(true) { int expected = 0; int desired = 1; if (Interlocked.CompareExchange(ref _locked, desired, expected) == expected) break; Thread.Yield(); } 이 코드를 정리를 해보면 만약에 A 쓰레드가 있고, B쓰레드가 있다 A쓰레드가 공유 자원을 점유하고 있으면 lock이 0에서 1로 바뀌고 B 쓰레드는 접근 하려니까 lock이 1이니까 계속 무한 루프를 돈다. 이것은 성능상의 저하를 불러 일으킨다. 왜? 쓸데없는 행동이기 때문에 따라서 A쓰레드가 공유자원을 사용을 끝날 때 까지 B쓰레드를 무한루프를 돌게 하지말고 재우는데 Thread.sleep, yeild.. 뭐 이런 함수를 이용해서 재우는데 그럼 무한 루프가 잠시 멈추는 상황이잖아요? 그럼 a쓰레드가 공유자원을 쓰고 나왔다는 것을 어떻게 알 수 있나요? 검색 해보니까 sleep을 os가 깨운다는데 그럼 정리를 해보면 면접관님 께서 만약 이런 질문을 하시면 일단 OS가 A 쓰레드가 할일을 끝냈으니, 잠자고 있던 B쓰레드를 깨워서 그때부터 반복을 해서 다시 LOCK 검사를 진행합니다. LOCK 변수 값이 0이라면 컨텍스트 스위칭이 일어나는데 A 쓰레드의 정보가 레지스터에서 지워지고 B 쓰레드 정보가 채워짐으로써 B 쓰레드가 CPU를 점유하고 이제 B쓰레드가 공유자원 _num변수를 사용해서 _num++연산이 진행이 됩니다. 이렇게 저는 해당 챕터 강의를 이해 하고 정리를 했거 든요 혹시 틀린 점이 있다면 알려주심 감사하겠습니다. 아 그 sleep 걸어놓고 os가 깨우는 거 맞는지도 알려주시면 감사하겠습니다. ^^
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
컨트롤 URI로 설계할 때 기준이 있을까요?
localhost:9200/bank/_bulk?pretty&refresh localhost:9200/seller/_search 엘라스틱 서치에서는 위와 같이 리소스에 _동사를 통해서 컨트롤 URI를 설계하는 것 같습니다. 컨트롤 URI 명칭을 짓는 기준이 있을까요? _동사로 시작한다던지 /start-delvery처럼 /동사-명사로 상태를 구분한다던지 기준이 있을까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
3way 가 소켓 라이브러리 단계에서 일어나는건가요?
Tcp 계층에서 3way 가 일어나는게 아니라 에플리케이션 단에 있는 소켓라이브러리가 해주는건기요..?? 전 수업이였던 tcp udp 수업에서 이해 한거로는 tcp에서 하는걸로 이해했는데 잘못이해 했나요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
순서보장 ,검증 등
Tcp의 장점들인 순서보장이나 검증등은 3-way 요청시 같이 일어나나요?? 그리고 순서가 보장되지 않았을때 서버쪽에서 2번부터 다시 보내라고 했을때 보냈더니 또 3번 2번 순으로 도착하게되면 서버가 또 다시보내라고 요청을 하나요?
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
url에 대해 질문있습니다
url과 dns의 차이가 궁금합니다 http://www.naver.com/login 이라는 게있으면 url은 저기 저문장 전체고 dns는 www.naver.com 이라고 이해하면되는걸까요??
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
dns에 대해 질문입니다
dns 서버에 ip주소를 등록한다고 했는데 만약에 ip주소가변경됐을경우 dns서버에 ip를 다시 등록해야지 되는건가요?? 또 dns서버라는게 인터넷 통신사에서 제공해주는건가요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
이동 동기화들을 보면서 생각한게 있는데요.
만약에 애니메이션 이나 따로 동기화 하는 부분이라면 애니메이션 동기화를 예를들면, 파라미터 데이터를 하나씩 보내는거 보다는 한 캐릭터에 모든 파라미터 데이터를 모았다가 한번에 서버로 보내는게 최고에 방법인가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
캐시가 삭제되는 시점
아래 기존 질문에 대한 답글을 읽었습니다. 304를 위해서 바로 삭제하지는 않습니다. -> 캐시가 계속 쌓일 수는 없으니까 어느순간 삭제는 되어야 할 것이라는 생각이 듭니다. 삭제되는 시점이나 기준?! 이 언제가 되는 건가요??
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
GET, POST 메서드 외 비활성화 관련
실제 실무에서 URI 설계를 강의 내용과 같이 설계하고 진행한 경우가 있었으나, PR 서버 환경에서 PUT, DLETE, PATCH 메서드가 비활성화 되어 이슈가 있었던 적이 있습니다. 관련하여 사유를 확인해보니 보안과 관련한 사항으로 GET과 POST만을 허용하기 위함이라고 응답받았는데 이와 관련해서는 어떻게 생각하시나요?? 실제로 PUT, DELETE, PATCH가 보안에 위협이 되는 메서드인지도 잘 모르겠습니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
멀티쓰레드와 관련해서 질문이 있습니다.
멀티쓰레드를 학습하게 되면서 나름대로 정리를 해보았는데요. 멀티쓰레드 환경에서는 쓰레드가 공유하는 자원에 대한 일관성이 보장되어야 한다. 즉, 특정 쓰레드에서 공유 자원의 데이터를 변경하면 다른 쓰레드에서도 똑같이 변경된 데이터를 다뤄야한다. 이러한 문제를 해결하기 위해 쓰레드가 공유 자원에 접근하기 전 Lock을 걸고 들어가서 다른 쓰레드가 해당 자원에 접근하지 못하도록 막고, UnLock을 통해서 다른 쓰레드가 접근할 수 있게 해준다. 이 때 접근한 쓰레드는 변경된 공유 자원 데이터를 사용하게 된다. 이렇게 이해한게 맞는건가요 ? 원자성이라는 개념을 이해하기를 하나의 작업을 처리할 때 수행되는 모든 과정들을 일련의 한 묶음으로 보고 이것은 마치 더이상 나누어지지 않는 것처럼 모두 수행되거나 모두 수행되지 않아야 한다. 그런데 Lock을 통해서 원자성을 구현한다고 이해하고 있는데 이게 맞는건지 궁금합니다... 왜냐하면 Lock을 통해서 공유자원에 다른 쓰레드가 접근을 못하게 막는것은 맞지만 Unlock을 할 때까지 여러가지 작업을 할 수 있는데 그것은 원자성을 보장하지 않는 거 같다고 생각해서입니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
코어와 프로세스, 쓰레드간의 관계에 대해서 궁금합니다
그림판 비유를 보면 컴퓨터에서 동시에 사용하는 프로그램마다 최소한 하나의 프로세스와 쓰레드를 가지고 있는데 컨텍스트 스위칭이 일어난다고 하면 코어 하나만 갈구는거 아닌가요? 그리고 아직 쓰레드를 직접 사용해본적이 없어서 잘 모르겠지만 메모리의 동기화를 보장하기 위하여 멀티스레드 프로그래밍에서 lock를 적극적으로 사용하는데 이러면 어느부분에서 성능향상이 일어나나요? lock을 사용하면 사용할수록 싱글코어와 다를것이 없다고 생각되서요 Web에서 종종 다루는 비동기적 처리를 하기 위해서 스레드를 사용하는건가요?