WEB 8

[Web] HTTP & REST에 대한 고민

REST REST는 Client에서 Server에 데이터를 요청할 때 활용하는 인터페이스와 같습니다. Server가 얼마나 REST에 가까운 API Design을 했느냐에 따라 Client 개발자는 예상가는 데이터 처리를 할 수 있습니다. 개발자들과 협업할 때 통일된 약속은 매우 중요합니다. 만약 통일된 약속이 없다면 명세서 확인으로 부족하여 어떤 데이터가 반환되는지 소스코드를 일일이 확인해야하는 불상사가 발생할 수도 있죠. 그리고 REST 설계방식은 배우기도 그리 어렵지 않습니다. 이런 이유로 예상가는 WEB API Design을 하기 위해 REST API를 강조하는 것이죠. ( 하지만 약속이 중요할 뿐 반드시 REST 설계형식을 따라야 한다는 것은 아닙니다. GraphQL과 같은 방식도 있죠. ) H..

DevOps/Web 2019.10.18

학습 // Spring // REST // Controller

업데이트 :: 2018.08.16 @RestControllerCORSCORS 옵션URI조립@RestController@RestController @RequestMapping("books") public class BookRestController() { } CORSCORS : Cross-Origin Resource SharingAJAX(XMLHttpRequest)를 사용할 때 다른 도메인의 서버리소스에 접근하기 위한 메커니즘CORS 옵션allowedOrigins접근을 허용할 오리진(도메인) 지정기본값 : '*' (모두이용가능)allowdMethods접근을 허용할 HTTP 메서드 지정기본값 : '*' (모두이용가능)allowHeaders접근을 허용할 헤더를 지정preflight 요청이 들어올때 이 값으로 ..

Spring/REST 2018.08.20

학습 // Spring // REST

업데이트 :: 2018.08.15 REST API 아키택처ROA(Resource Oriented Architecture)프레임워크 아키텍처REST API 아키택처REpresentational State Transfer클라이언트와 서버사이에 데이터를 주고받는 애플리케이션을 만들기 위한 아키텍처 스타일 중 하나REST API는 데이터베이스 등에서 관리되는 정보에서 클라이어트에게 제공할 정보를 '리소스'의 형태로 추출추출된 리소스에 접근(CRUD 조작)하기 위한 수단으로 REST API를 제공ROA(Resource Oriented Architecture)ROA는 RESTful 웹애플리케이션을 구축하기 위한 구체적인 아키택처를 정의7가지 특징웹 리소스로 공개URI를 통한 식별 (Uniform Resource I..

Spring/REST 2018.08.20

학습 // Spring // WEB // View

업데이트 :: 2018.08.15 뷰 선택템플릿 기반 뷰ViewResolver 빈정의뷰 선택뷰는 Model에 저장된 자바객체를 참조 클라이언트에 반환할 응답데이터를 만드는 컴포넌트org.springframework.web.servlet.View (인터페이스)org.springframework.web.servlet.ViewResolver (구현클래스)템플릿 기반 뷰템블릿 기반 View 클래스InternalResourceViewJSPJstlViewJSP + JSTLTilesViewApache Tiles (레이아웃엔진)JSP (템플릿엔진)FreeMarkerViewFreeMarkerGroovyMarkupViewGroovy Markup Template EngineScriptTemplateViewJSR 223 sc..

Spring/WEB 2018.08.20

학습 // Spring // WEB // 화면이동

업데이트 :: 2018.08.15 화면이동이동대상지정리다이렉트요청파라미터지정경로변수지정요청경로로 포워드뷰와의 데이터 연계리다이렉트와 데이터연계화면이동이동대상지정핸들러의 메서드 뷰이름( 이동대상에 할당된 논리적 이름 )을 반환하도록 만듬뷰 이름을 반환하면 스프링 MVC가 ViewResolver를 통해 뷰 이름과 연결@Controller public class WelcomeControlller { @RequestMapping("/") public String home() { return "home"; } } 핸들러 메서드의 반환값으로 뷰 이름을 반환리다이렉트@Controller public class WelcomeController { @RequestMapping("/") public String home(..

Spring/WEB 2018.08.20

학습 // Spring // WEB // Validation

업데이트 :: 2018.08.10 입력값검사입력값검사 활성화입력값검사와 결과의판정미입력처리입력값검사 규칙지정중첩된 자바빈즈의 입력값 검사입력값검사 규칙추가입력값검사규칙을 교체하는 방법오류정보표시오류메시지의 재정의Bean Validation 커스터마이징Spring Validator 이용입력값검사입력값검사 활성화@Validated@javax.validation.Valid@ReqestMapping(method=RequestMethod.GET) public String search( @Validated AccountSearchForm form, BindingResult result, Model model ) BindingResult에는 요청 데이터의 바인딩 오류와 입력값 검사 오류 정보가 저장입력값검사와 결과의..

Spring/WEB 2018.08.20

학습 // Spring // WEB // RequestMapping

업데이트 :: 2018.08.10 요청매칭요청경로경로패턴사용HTTP 메서드요청 파라미터요청 해더Content-Type 해더Accept 해더요청매칭@RequestMapping지정가능한속성value요청경로 ( 또는 경로 패턴 )을 지정pathvalue 속성의 별명을 지정methodHTTP 메서드값params요청 파라미터 유무나 파라미터값을 지정headers헤더 유무나 해더값을 지정consumesContent-Type 해더값(미디어타입)을 지정producesAccept 해더 값(미디어 타입)을 지정name매핑정보에 임의의 이름을 지정속성에 지정하는 값에 따라 매핑룰이 바뀌지 않음요청경로@Controller @RequestMapping("accounts") public class AccountController..

Spring/WEB 2018.08.20

학습 // Spring // WEB // controller

업데이트 :: 2018.08.10 컨트롤러컨트롤러 구현DI 컨테이너 등록컨트롤러 클래스핸들러 메서드핸들러 메서드의 Param값핸들러 메서드의 Return값뷰 컨트롤러 이용컨트롤러컨트롤러 구현컨트롤러 클래스폼 클래스JSP와 같은 템플릿 파일 (뷰)컨트롤러에서 처리할 내용선언형 처리 : 메서드 시그니처를 참조해서 프론트 컨트롤러가 하는일요청 매핑요청 데이터 취득입력값 검사 수행프로그래밍형 처리 : 컨트롤러 클래스의 메서드 안에서 하는 일입력값 검사 결과 확인비즈니스 로직 호출이동대상 확인 및 데이터 연계이동대상 지정// == 선언형처리 == @RequestMapping(path="/message", method=RequestMethod.GET) // 요청매핑 public String search(@Valid..

Spring/WEB 2018.08.20