목록Java/Spring (31)
오답노트
DI (Dependenct Injection) 장점 의존성으로 부터 격리시켜 코드 테스트에 용이하다. DI를 통하여, 불가능한 상황을 Mock와 같은 기술을 통해, 안정적으로 테스트가 가능하다. 코드를 확장하거나 변경할 떄 영향을 최소화한다. (추상화) 순환참조를 막을 수 있다. public class Main { public static void main(String[] args) { String url = "www.naver.com/books/it?page=10&size=20&name=spring-boot"; Encoder encoder = new Encoder(new Base64Encoder()); String result = encoder.Encoder(url); System.out.println..
Object Mapper Object Mapper는 이전 Request에서 Object에서 text로 바꿀때 혹은 그 반대일 때 Object Mapper가 내부적으로 변환해주었다. 이를 실제로 활용해보자. Object to Text Object에서 Text로 변환할 때, Object Mapper는 get~ 메소드를 활용한다. 이때 get이라는 단어가 들어간 모든 메소드를 참조하기 때문에, 클래스 내부에서 get이 들어가는 메소드를 만들지 않도록 주의하자. var objectMapper = new ObjectMapper(); // object -> text 일 때, get method를 활용한다. //Object -> Text Json User user = new User("steve",10,"010-99..
Request 요청에 대한 응답으로 응답 코드와 함께 body에 데이터를 보낼 수 있다. Text, Object, JSON 응답 import com.example.response.dto.User; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("/api") public class ApiController { // text @GetMapping("/text") public String text(@RequestParam String account)..
PUT 데이터를 입력할 때 사용한다. 멱등성은 유지 되지만 안정성은 보장 되지 않는다. import com.example.put.dto.PostRequestDto; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api") public class PutApiCo..
JSON Post 방식은 Body를 통해 데이터를 주고 받는다. 이때 가장 잘 사용하는 포맷이 JSON이다. JSON은 대괄호로 depth를 나누고 key 와 value로 이루어져 있다. string : value number : value boolean : value {} object : value array : value { "phon_number : "010-0000-0000", "age" : 10, "isAgree" : false, "account" : { "email" : "asd@gmail.com", "password":1234 } "array" [ { "account" : "asdf", "password" : 1234 }, { "account" : "asdf", "password" : 123..
Controller 생성 @RestController @RequestMapping("/api/get") public class GetApiController {} RestController와 RequestMapping Annotation을 사용하여 컨트롤러 클래스를 생성한다. GetMapping 과 RequestMapping GetMapping path 를 지정하여 해당 주소를 GET방식으로 요청할 때 실행할 API를 구현 할 수 있다. @GetMapping(path="/hello") public String getHello(){ return "get Hello"; } RequestMapping GetMapping 보다는 전통적인 방식으로 path와 method를 지정하여 API를 구현 할 수 있다. @..
Spring Boot 스프링부트는 단순히 실행되며, 프로덕션 제품 수준의 스프링 기반 어플리케이션을 쉽게 만들 수 있다. 스프링부트 어플리케이션에는 스프링 구성이 거의 필요하지 않다. 스프링부트 java -jar로 실행하는 Java 어플리케이션을 만들 수 있다. 그리고 스프링보다 개발이 빠르고, 광법위하게 적용할 수 있는 환경이다. 기본값 설정이 있지만 설정을 바꿀 수 있다. 대규모 프로젝트에 공통적인 비 기능 제공이 있다. XML 구성 요구사항이 전혀 없다. Spring Boot 사용하기 intelij에서 Spring initioalizer를 통해 프로젝트를 만들고 간단한 문자열 출력 API를 만들어 보자 import org.springframework.web.bind.annotation.GetMapp..
HTTP HTTP(Hyper Text Transfer Protocal)로 RFC 2616에서 규정된 Web에서 데이터를 주고 받는 프로토콜이다. 이름에는 하이퍼텍스트전송용 프로토콜로 정의되어 있지만 실제로는 HTML, XML, JSON, Image, Voice, Video 등 다양한 컴퓨터에서 다룰 수 있는 것은 모두 전송할 수 있다. HTTP는 TCP를 기반으로한 REST의 특징을 모두 구현하고 있는 Web기반의 프로토콜이다. HTTP는 메시지를 주고(Request) 받는 (Response) 형태의 통신 방법이다. 메소드 https://ko.wikipedia.org/wiki/HTTP 멱등성은 서버의 몇번을 요청하더라도 같은 내용을 응답하는 것이 멱등성이다. 상태 코드 자주 사용되는 코드
URI 과 URL URI(Uniform Resource Identifier)는 인터넷에 특정 자원을 나타내는 주소 값으로 해당 값을 유일하다. (응답을 달라질 수 있다.) URL(Uniform Resource Locator)는 인터넷 상에서의 자원, 특정 파일이 어디에 위치하는지 식별하는 주소이다. 즉 URL은 URI의 하위 개념이다. URI 설계 원칙 (RFC-3986) 슬래시 구분자(/)는 계층 관계를 나타내는 데 사용한다. URI마지막 문자로 (/)는 포함하지 않는다. 하이픈(-)은 URI 가독성을 높이는데 사용한다. 밑줄(_)은 사용하지 않는다. URI 경로에는 소문자가 적합하다. 파일 확장자는 URI에 포함하지 않는다. 프로그래밍 언어에 의존적인 확장자를 사용하지 않는다. 구현에 의존적인 경로를..
REST REST(Representational State Transfer : 자원의 상태 전달)는 네트워크의 아키텍쳐이다. 아래 6 항목을 지켜야 RESTful하다고 할 수 있다. Client, Server : 클라이언트와 서버가 서로 독립적으로 분리 되어 있어야한다. Stateless : 요청에 대해서 클라이언트의 상태를 서버에 저장하지 않는다. Cache : 클라이언트 서버의 응답을 Cache(임시저장) 할 수 있어야한다. 클라이언트가 Cache를 통해서 응답을 재사용할 수 있어야 하며, 이를 통해서 서버의 부하를 낮춘다. 계층화 : 서버와 클라이언트 사이에, 방화벽, 게이트웨이, Proxy 등 다양한 계층 형태로 구성이 가능해야 하며, 이를 확장 할 수 있어야한다. 인터페이스 일관성 : 인터페이스..