묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
304 와 캐시
304를 받으면 데이터를 새로 다운받지 않고 원래의 것을 그대로 사용한다고 하셨는데요. 캐시가 소멸됐기 때문에 캐시의 star.jpg를 사용할 수 없는 건데 어떻게 새로 다운받지 않고 star.jpg를 사용할 수 있는 것인지 이해가 잘 안 됩니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
DELETE 메소드의 코드 설계
강의 잘 듣고 있습니다. 좋은 강의 감사합니다. 강의 주제를 벗어난다고 생각하지만 질문이 있습니다. 예시를 드신 것처럼 DELETE method 를 호출해서 파일을 삭제한다고 했을 때, 두번째 호출의 응답을 어떻게 하는 것이 코드 레벨에서 좋은 설계인지 궁금합니다. 가정 클라이언트에서 파일 삭제를 요청, 서버에서 성공했으나 정상 응답을 주지 못함 클라이언트는 정상 응답을 받지 못했으니 재요청을 함 위 가정에서 서버는 재요청으로 인해 존재하지 않는 파일을 삭제하라는 요청을 받은 상황이 되는데요 제가 생각하는 방식은 2가지가 있습니다. 1. 없는 파일을 삭제하라고 하는 요청이니 '파일이 존재하지 않습니다.' 같은 오류 메시지와 함께 오류 코드를 응답 ```java File file = fileRepository.find(File.class, id); if (!file.isExist()) { return FileNotExistException("파일이 존재하지 않습니다."); } ``` 2. 사용자의 요청은 파일을 삭제하는 것이다. 파일의 존재 유무가 어떻든 요청에 성공한 상태이니 성공했다고 응답 ```java File file = fileRepository.find(File.class, id); if (!file.isExist()) { return true; } ``` 저는 둘 다 일리가 있지만 1번 방식이 더 좋은 방식이라고 생각하는 편입니다. 재요청을 받았을 때 실제로는 파일을 삭제하지 않았으면서 사용자에게는 삭제했다고 응답을 주는 게 맞지 않다고 생각해서요. 그런데 이렇게 생각하던 당시 제 머리 속에는 '멱등' 에 대한 개념을 고려하지 않은 상태였었습니다. 개념은 알고 있었지만 평소에 신경 써서 고려하던 것은 아니었거든요. 더 정확하게는 민망하지만 잊고 있던 내용이었습니다. ㅎㅎ 오늘 이렇게 강의를 들으면서 다시 한번 궁금해지는 내용이라 질문을 남깁니다. 서비스에 따라 정답이 없는 영역이라는 생각도 듭니다. 그렇다면 좀 더 '정설'에 가까운 쪽이나 사례, 선생님의 견해가 궁금합니다!
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
HTTP Form 과 HTTP API 질문입니다.
QnA를 읽다가 이런 답변을 봤습니다."HTTP API는 HTTP를 사용해서 서로 정해둔 스펙으로 데이터를 주고 받으며 통신하는 것으로 이해하시면 됩니다." 여기서 질문입니다. 1. 위 말씀대로라면 HTTP Form 도 HTTP API의 일종 같은데, 맞나요? 2. HTTP Form과 HTTP API를 강좌에서는 아예 따로 설명하는데, 둘을 나누는 기준이 뭔가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
영구 리다이렉트와 일시 리다이렉트
안녕하세요 강사님, 질문 드리겠습니다. 영구 리다이렉트와 일시 리다이렉트의 차이점을 모르겠습니다. 물론 강의에서 말씀하신대로 영구는 앞으로도 쭉 리다이렉트 해야하고 일시는 그러지 말아야 할 수도 있는 상황에 사용한다고 하지만.. 어쨌든 영구든 일시든 3xx로 보내면 리다이렉트 된다는 결과는 둘 다 똑같지 않나요? 그냥 의미적으로만 구분하기 위해 나눠서 사용하는 것인지, 아니면 사용 측면에 있어서 다른 차이점이 있는지 궁금합니다. 감사합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
TCP/IP 패킷 정보 부분에서 질문이 있습니다.
서버의 응답을 클라이언트가 받는 과정에서 질문이 있습니다. 클라이언트는 요청을 할 때 출발지 IP, 목적지 IP 와 기타 정보를 IP 패킷에 넣어서 하고, 서버는 응답 시 출발지 IP 와 목적지 IP 를 반대로 해서 한다고 이해했습니다. 큰 틀에서는 이해했습니다만 IP와 관련해서 의문이 있습니다. 대부분의 서버는 공인 IP를 사용할테니 찾아가는데 문제가 없을 것이라 생각합니다. 문제는 클라이언트인데 일반적인 인터넷 사용자는 통신사에서 할당한 공인 IP 에 내부 IP 를 받아 사용할텐데요. 목적지 IP를 찾아오는 방식이 궁금합니다. 클라이언트가 요청할 때 출발지 IP 정보에 내부 IP 와 공인 IP, mac address 를 다 넣어서 요청을 하는건가요? 아니면 다른 방식이 있는건가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
POST 사용 예시 질문
강사님 안녕하세요:) 강의 내용 중 POST 예시에서 "기존 자료에 데이터 추가 ex) 한 문서 끝에 내용 추가하기" 에서 궁금한 점이 생겨 질문드립니다. 위 경우 저는 PATCH 나 PUT을 사용해서 /contents/{id} 이런식으로 기존 내용에 추가해야 할 것이라고 생각했는데, 왜 POST를 사용하는지 궁금합니다. 또한, POST를 사용할 경우 http body에 기존 문서의 id를 넣어서 전송해야 되는 것 맞나요? 그리고 뒤에 HTTP API 설계 예시 강의 "HTTP API -컬렉션 회원관리 시스템" 부분에서 PATCH와 PUT을 사용하기 애매한 경우에는 POST를 사용하여 수정하라고 하셨는데, 어떤 경우가 애매한지 궁금합니다("기존 자료에 데이터 추가"가 그 애매한 경우인가요..?). 쓰다보니 질문이 많아졌네요,,ㅜ 강의를 들으면서 많이 배우고 있습니다. 정말 감사합니다!!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
API 질문
안녕하세요 강사님, 질문 드리겠습니다. 클라이언트가 서버에게 요청할 uri를 설계하는 것이 API 설계로 표현되었다면, 백엔드 개발자가 개발하게되는 모든 백엔드 로직들을 API라고 보면 되는 건가요? 지금까지 제게 있어 API는 그냥 남이 만들어놓은 것을 가져다 편리하게 쓸 수 있는 도구(ex 구글맵 API) 정도였는데요. 백엔드 개발자가 개발하는 서버 프로그램들도 API의 범주에 포함되는 것인가요? 감사합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
PDF 강의자료
안녕하세요 영한님 모든 강의 잘 듣고 있는 수강생입니다! 다름이 아니라 이번에 HTTP 강의를 수강하기 시작하면서 PDF파일이 350이 넘는 방대한 양을 가지는 것을 알게되었습니다. 수강생 개개인 마다 학습 스타일이 다르다고 생각하지만 복습 하는 과정에서 제가 원하는 내용이 pdf의 몇 페이지에 있는지 찾는데 어려움을 느끼고 있습니다. 제가 기억하기로는 Spring jpa강의에서는 코드 중심의 교육 자료가 아닌 정보전달 위주로 준비하셨기에 챕터마다 구분된 PPT로 제공해주셨고 data jpa에서는 코드가 중요한 부분을 차지하고 있기 때문에 한 개의 pdf파일로 구성되었다고 생각합니다. 따라서 혹시 강의 자료를 PPT로 제공해주셔도 되고, 아니면 Spring jpa처럼 챕터를 구분하여 강의자료를 올려주실수 있는지 질문드립니다. 사실 data jpa 실전편 강의들을 때도 강의 자료가 하나의 pdf로 되어있어서 복습하고 싶은 부분이나, 까먹었던 부분 바로바로 찾아보기에 힘듦도 있습니다 ㅠㅠ 마지막으로 강의마다 강의자료의 기본 페이지 크기가 차이가 많이 나는듯 합니다. 요즘 pdf나 ppt를 노트앱에 저장해놓고 팬슬이나 키보드 사용해서 강의 내용을 받아 적으면서 공부하는데 기본 페이지 크기가 들쭉날쭉해서 강의 들을 때 마다 자료의 크기에 맞게 환경을 조정하니 자연스레 강의에 몰입하는데 시간이 좀 걸리는거 같아요 ㅠㅠ 혹시 기본 페이지 크기를 완벽하게 맞추지는 못하더라도 어느정도 균일하게 만들어서 제공해주시면 어떤지 생각합니다ㅠㅠ 두서가 상당히 없지만 항상 강의 잘 듣고 있습니다!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
IP 4계층 질문
안녕하세요, 질문 드리겠습니다. 웹 통신에서는 강의에서 설명하시는 IP 4계층을 통해서만 통신이 이뤄지나요? 흔히 알려져있는 OSI 7계층과 완전히 개별적인 것인지 궁금합니다. 감사합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
모바일에서 flow
안녕하세요 김영한님. 강의를 듣다가, 문득 모바일의 경우에는 flow가 어떻게 되는지 궁금해져서 질문남깁니다. 인터넷에서 통신은 결국 IP와 Port번호를 알아야 data를 전송할 수 있는 것으로 이해하고 있습니다. 그런데, 모바일은 IP가 계속 바뀌고 Port번호를 따로 설정하지 않아도 카톡 메시지를 서버로 부터 수신할 수 있습니다. 검색을 통해, FCM이나 APNs과 같은 Push 서버를 이용해서 보낸다는 개념은 이해하였습니다만, 이 Push 서버들이 어떻게 바뀌는 모바일의 IP를 알아내는 건지, port 포워딩?은 어떻게 해결하는지 궁금합니다. 바쁘시겠지만, 답변남겨주시면 정말 감사하겠습니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
Persistent Connection 질문입니다.
안녕하세요 김영한님. Persistent Connection 질문입니다. 제가 간단한 웹 프로젝트를 운영하고 있는데, 자동으로 Persistent Connection가 적용된 것처럼 보입니다. 원래 따로 설정을 해주어야 적용이 되는 건지, g유니콘이나 그런 앱에서 알아서 처리를 해주는 건지, HTTP 자체적으로 기본설정이 되어 있는 건지, 궁금합니다!
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
질문있습니다!
안녕하세요. 좋은 강의를 보고 패킷모아 보내기를 테스트 해보고 있습니다. 강의와 같이 ServerSession을 500개 만들어서 테스트를 해보면 500개 까지 Connect가 안되고 400좀 넘어서 끝나버리는데(실행할때마다 달라요) 이게 피씨 사양과도 관련이 있나요? 아님 다른 이유가 있을까요? (선생님 파일을 받아서 실행해봐도 비슷해서요)
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
cache-control: no-store 메모리 질문
캐시 컨트롤 지시어가 no-store일때, 메모리에서 사용하고 최대한 빨리 삭제하라고 되어있는데, 저 메모리는 어디인가요? 보통, 캐시는 웹 브라우저상에 있는 저장공간에 저장되는거로 알고있는데, no-store일때 저장되는 메모리공간은 다른곳인가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
cache 메타 데이터 갱신
클라에서 서버로 요청 할 경우, 1. header에 cache-control의 max-age의 시간은 이미 만료 2. last modified date의 시점이 아직 변경되지 않은 시점일 때 서버에서 클라이언트로 보내주는 header 정보에 cache meta 데이터는 어떤 식으로 갱신이 되는건가요?
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
웹 서버 포트에 대해서 ...
웹 서버, 즉 http는 80번 포트로 연결된다고 알고있는데, 스프링 부트에서 동작하는 톰캣은 왜 8080번 포트로 연결되는 것이 기본값 인가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTTP API vs REST API
HTTP API를 기반으로 한 것이 REST API인가요? 무슨 차이가 있는지 궁금합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
강의 듣고 궁금한 점이 생겼습니다.
로그인 유지를 위해 세션, 쿠키를 사용해 어쩔 수 없이 서버에 상태를 저장해야 된다고 하셨는데요! 그러면 세션과 쿠키를 사용했을 때에는 어떻게 서버를 증설할 수 있나요? 제가 생각해본 바로는 redis에 로그인 정보를 저장하는 방식으로 가능하다고 생각이 들었는데 맞는 방법일까요?? 그리고 토큰을 사용하면 로그인 관련해서도 무상태로 서버를 유지할 수 있는거 같은데 맞나요?? 명확하게 답이 나오지않아서 질문드립니다! 항상 좋은 강의 감사드립니다! 새해 복 많이 받으세요 ㅎㅎ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
19:00 쯤 Player를 찾고 로그를 남기는 테스트에서
19:00 쯤 Player를 찾고 로그를 남기는 테스트에서 chatPacket.chat를 로그로 남긴 후에 GameObject를 Find할 때 메인 쓰레드에서 사용하라는 예외가 발생합니다. 혹시 제가 잘못 작업했나 해서 올려두신 자료를 받아서 해보아도 똑같이 try catch에서 넘어가질 못하네요 유니티 버전 2021.1.0b1에서 안되서 2019.4.17f1까지 낮춰봤는데도 안됩니다. 무언가를 빠트린거 같은데 찾기가 힘드네요 혹시 조언좀 해주실 수 있을까요
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
field value 대소문자
안녕하세요 질문 드립니다. field name은 대소문자를 구분하지 않는다고 하셨는데 field value는 대소문자를 구분한다고 봐야 할까요? 실제로 GOOGLE.com으로 입력해도 google.com으로 열어주는데 브라우저의 기능일까요? 확인 부탁드려요~
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
20x 상태코드에 대한 질문입니다.
이런 수업이 다른 곳에 없다보니 질문이 많게 되네요 ;; 저같은 경우 게시글 추가 API, 회원가입API 같은 경우 post method로 클라이언트에서 서버로 요청하고 서버는 그 요청에 성공적으로 응답할 때 200 상태코드와 함께 post_id나 user_id를 리턴하도록 하였습니다. 만약 헤더내의 location을 이용한다면 user_id, post_id까지 사용하지 않게 될테니 204로 리턴해도 되겠네요. 그런데 201 스펙처럼 클라에서 요청한 데이터값을 서버가 다시 리턴하는 이유가 있을까요? 왜냐하면 게시글추가라던지, 회원가입이라던지 어차피 클라이언트에서 보낸 데이터라 클라이언트에서 쿠키에 저장하면 될 것 같거든요. 불필요하게 서버에서 클라이언트에게 '클라이언트가 보낸 데이터'를 보낼 필요가 있는가에 대한 의문이 들어서 질문하게 되었습니다.