본문 바로가기

분류 전체보기

(111)
HTTP 상태코드 400 VS 500 400대랑 500대의 가장 중요한 차이점은 400대는 클라이언트 요청 오류라 아무리 새로고침해도 에러가 고쳐지지 않지만 500대 에러는 서버문제이기 때문에 서버가 복구되거나 디비가 복구되는 경우 반복 요청시 접근 가능할 수 있다. 서버는 의도적으로 500대 에러를 내면 안된다 만약 20세 미만의 회원가입을 받지 않는다고 했을 때 15세가 회원가입을 신청했을 때 500대 에러를 낸다? 절대 안된다. 400대나 200대로 해결을 해야 한다. 다음은 400번대와 500번에 HTTP 상태코드이다. - 400 Bad Request : 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음 요청 구문, 메시지 등등 오류 클라이언트는 요청 내용을 다시 검토하고, 보내야함 예) 요청 파라미터가 잘못되거나, AP..
HTTP 상태코드 : 300번대 오늘은 HTTP 상태코드의 300번대에 대해 알아보겠다. 보통은 리다이렉션을 요청하는 상태코드이다. 300 번대 결과값이 나오는 요청에는 PRG가 있다. ( PRG란 Post/Redirect/Get 의 앞자리만 따온 것) PRG를 사용해야하는 예시를 하나 들어설명해보겠다. 만약 POST로 주문 후에 웹 브라우저를 새로 고침한다고 생각해보자. 새로고침은 다시 요청을 보내고, 중복주문이 될 수 있다. 이 상황을 단계로 나타내보자. 1단계 : 주문을 클라이언트에서 요청한다. (POST) 2단계 : 서버는 주문데이터를 디비에 저장한다. 3단계 : 디비에 저장후 서버는 클라이언트에 성공 메시지를 응답한다. 4단계 : 결과 화면에서 새로고침을 한다.(POST) 5단계 : 또 다시 요청이 클라이언트에서 서버로 들어간..
HTTP API 설계 예시 HTTP API는 예시를 POST기반과 PUT 기반으로 나누어 들수 있다. POST 기반 API 설계 예시 회원 목록 /members -> GET 회원 등록 /members -> POST 회원 조회 /members/{id} -> GET 회원 수정 /members/{id} -> PATCH, PUT, POST 회원 삭제 /members/{id} -> DELETE 여기서 URL(members)은 동사가 아닌 자원 그 자체로 설정해야 한다. 위 예씨를 보면 목록과 등록이 같은 URL인데 이것은 GET과 POST의 차이이다. 단순한 조회의 경우에는 GET을 사용하고 데이터를 등록하거나 수정하는 것 등의 경우에는 PATCH, PUT, POST를 적절히 사용하면 된다. 다음은 PUT 기반의 API 설계 예시이다. 파..
HTTP 상태코드 정리 1xx : 요청이 수신되어 처리중 2xx : 성공 - 200 OK : 요청 성공 - 201 Created : 요청 성공해서 새로운 리소스가 생성됨 - 022 Accepted : 요청이 접수되었으나 처리가 완료되지 않았음 - 204 No Content : 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음 3xx : 리다이렉션 - 웹 브라우저는 3xx 응답의 결과에 Location 헤더가 있으면, Location 위치로 자동 이동(리다이렉트) - 301 : Moved Permanently : 리다이렉트 요청시 요청 메서드가 GET으로 변하고, ,본문이 제거 될 수 있음 ( MAY) - 308 Permanent Redirect : 301과 기능은 같음, 리다이렉트 요청 메서드와 본..
HTML Form GET은 조회에만 사용!! > 데이터가 그대로 url에 노출됨 HTML Form 전송은 GET, POST만 지원하기 때문에 이론적인 HTTP API를 설계하기엔 문제가 있다. 같은 URL이라면 GET은 폼 형식 불러올때 사용하고, POST는 폼에 있는 데이터를 서버에 전송할 때 사용하는 것이 좋다. GET은 인수가 쿼리 파라미터로 url에 노출되기 때문에 보안에 취약하다. POST의 경우 HTTP body에 데이터를 넣어서 보내기 때문에 그나마 좀 낫다고 한다.. - HTML Form 데이터 전송 HTML Form submit시 POST 전송 예) 회원 가입, 상품 주문, 데이터 변경 Content-Type: application/x-www-form-urlencoded 사용 form의 내용을 메시지 바디..
[javaScript] FileReader 객체 FileReader객체는 웹 애플리케이션이 비동기적으로 데이터를 읽기 위하여 읽을 파일을 가리키는 File 혹은 Blob 객체를 이용해 파일의 내용( 또는 raw data 버퍼 )을 읽고 사용자의 컴퓨터에 저장하는 것을 가능하게 해줍니다. 생성자 FileReader() : 새롭게 생성된 FileReader를 반환합니다. let reader = new FileReader(); 속성 FileReader.error : 읽기 전용 DOMError 파일을 읽는 도중 발생한 에러를 나타냅니다. FileReader.readyState : 읽기 전용 FileReader의 상태를 나타내는 숫자입니다. 상태 값 EMPTY : 0 : 아직 데이터가 로드되지 않았음 LOADING : 1 : 데이터가 로딩중 DONE : 2 :..
본인이 아닌 경우 일회성 alert 띄우기 - 상황 요약 공개/비공개 게시글 리스트가 있고 게시글 제목을 클릭하면 로그인 페이지가 뜨는데 로그인 후 본인이 아닌경우 리스트 페이지로 이동후에 alert메시지를 띄워야 함. 하지만 인증 페이지(jsp)를 거쳐야 하기 때문에 RedirectAttributes를 사용할 수 없음 - 해결방법 ModelAndView 객체에 addObject로 객체 추가 ... 후에 본인 아닌 경우의 메시지 추가한 후 var msg = ''; 페이지 로딩시 메시지 확인해준 뒤 새로고침해주면 된다 ^^.. 이것때문에 몇시간을 삽질했던가.. $(document).ready(function(){ if ("NOTEQUAL".equals(msg)) { let text = "본인 글이 아님니다"; if(confirm(text)){ lo..
[2022.09.20] 무지성으로 코드 복붙한 결과... 내 컴퓨터에서는 안나는 오류가 다른 이의 컴퓨터에서 나는데 이유를 몰라 삽질만 5시간째... 제작중인 사이트의 첫방문시에 쿠키 수집 허용을 요청하는데 이때 거부를 누르면 쿠키값을 가져올 수 없으니... 나는 쿠키 허용을 했지만 다른 동료들은 모두 쿠키 수집 거부를 누른것..! 그리하여 내 노트북에서만 작동하는 코드를 얻었던 것이다... 오늘의 요지는 무지성으로 갖다 붙여넣지 말고 붙여넣기 전에 조금이라도 이해하고 넣자... ^^... 내시간...ㅜㅜ