본문 바로가기

분류 전체보기256

[REST API] HATEOAS(Hypermedia as the Engine of Application State) 오늘의 주제는 HATEOAS입니다. HATEOAS는 Hypermeia as the Engine of Applicaation State의 약자로 REST에서 리소스의 3가지 요소(Data, Meta Data, HATEOAS)중 하나입니다. 개요 HATEOAS는 REST 어플리케이션이 다른 아키텍처와 다른 부분 하나입니다. 다른 아키텍처들에서 Hypermedia는 이미지, 동영상 등을 참조할 때 사용합니다. 하지만 REST는 본인의 모든 Resource의 요청을 HATEOAS를 통해 진행합니다. 예를 들어 게시판을 운영하고 있다고 합시다. 그리고 요청으로 모든 게시판의 리스트를 가져오겠다. 라고 한다면 아래와 같은 요청을 보낼 수 있을 것입니다. HTTP GET http://sabarada.tistory.c.. 2019. 10. 13.
[REST API] SOAP와 REST API의 비교 웹개발을 하다보면 한번쯤은 마주치는 주제입니다. SOAP는 무엇이고, REST와는 어떤 차이가 있을까요? 오늘은 이 주제에 대해서 한번 알아보도록 하겠습니다. 개론 SOAP는 Simple Object Access Protocol의 약자이며 일반적으로 XML 형식을 사용하는 기 정의되어있는 형식을 사용하는 Protocol입니다. REST는 REpresentational State Transfer의 약자이며 표준을 정의하지 않는 아키텍처 스타일입니다. 일반적으로 JSON이 많이사용되지만, XML, YAML 등 protocol을 강제하지 않습니다. 2가지 모두 SOA(Service oriented Architecture)를 목적으로 합니다. 그렇다면 공통점과 차이점을 알아보도록 하겠습니다. 공통점 기본 프로토.. 2019. 10. 4.
[REST API] HTTP Methods 분석 안녕하세요. 벌써 올해도 10월에 접어 들었습니다. 시간에 지남에 따라 스스로 많이 성장함도 느끼지만.... 아직 멀었구나라는 생각도 많이 듭니다. 모두들 화이팅하면 좋겠습니다. HTTP Methods 일반적으로 웹에서 REST API를 작성할 때 HTTP Methods를 이용하여 CRUD를 표현합니다. 자주 사용되는 HTTP Method는 아래와 같습니다. GET POST PUT DELETE PATCH 오늘은 위 5가지에 대해서 한번 알아보도록 하겠습니다. HTTP GET GET은 리소스를 가져올 때 사용합니다. GET을 사용했을 때는 서버에 어떠한 수정도 있으면 안됩니다. 서버에서 리소스에 대한 수정이 없기 때문에 GET Method는 safe methods라고 할 수 있습니다. 리소스에 영향이 없는.. 2019. 10. 2.
[REST API] REST에서의 리소스 이름 짓기 REST API를 설계하다보면 이름을 짓는게 어렵습니다. uri path를 사용해야할지.. body를 사용해야할지, 그리고 body를 사용한다면 json을 사용하는게 적합할까요? 아니면 query를 이용하는게 적합할까요? 오늘은 제 나름대로의 리소스의 이름을 짓는 가이드에 대해서 제가 찾아본 나름대로의 내용을 정리하여 설명드리도록 하겠습니다. 리소스 이름 가이드 이전 포스트에서 우리는 REST에서는 기본 데이터 표현을 리소스라고 하고 이러한 요소에는 Data, metadata, link가 있다는 것을 알게 되었습니다. 리소스의 이름의 중요성은 로이필딩의 논문에서도 아래와 같이 언급되고 있습니다. The key abstraction of information in REST is a resource. Any.. 2019. 9. 30.
[REST API] REST에서의 Resource REST API에 대해서 제대로 알고 싶다라는 생각에 찾아보던 중 괜찮다고 느껴진 사이트가 있습니다. 바로 https://restfulapi.net 이라는 사이트 입니다. 실제 로이필딩의 논문을 기반으로 상당히 자세하게 그리고 실무에 가깝게 풀어져 있었습니다. 물론 논문에 대한 해석은 모두 같을 수 없으며 다를 수 있습니다만 도움이 될것 같아서 들고왔습니다. 오늘은 여기서 본 내용중 Resource에 대한 내용을 정리해보도록 하겠습니다. 리소스(Resource) REST API의 주요한 정보는 리소스라고 합니다. 여기서 말하는 리소스는 일반적으로 말하는 파일, 이미지 뿐만 아니라 우리가 일반적으로 교환하는 모든 정보를 포함합니다. 예를 들어 문서, 이미지, 일반적인 서비스, 리소스들의 집합, 객체 등이 .. 2019. 9. 29.
[REST API] REST API에 관하여_6가지 제약조건 안녕하세요. 한 달 전 정도에 REST API사용에 주의할 점이라는 주제로 Youtube를 본 것을 정리한 적이 있습니다. 이때의 아이디어를 떠올려 새로운 게시물을 연재해 볼까 합니다. 오늘의 주제는 REST API의 6가지 제약조건입니다. 이전 포스팅에서 REST API는 REST 아키텍처를 따르는 시스템이라고 했습니다. 그리고 그 구성요소로는 아래와 같다고 했었습니다. Client-Server Stateless cache uniform interface layered system code-on-demand 이때는 Uniform Interface에 대해서 중심적으로 설명드렸습니다. 이번에는 전체적으로 한번 짚고 넘어가 보려고 합니다. 잘부탁드리겠습니다. 개요 REST는 Representational S.. 2019. 9. 24.
[Spring & Design Pattern] Spring에서 발견한 디자인패턴_Singleton Pattern 안녕하세요. 오늘은 Spring에서 발견한 디자인 패턴의 3번째 시간으로 SingleTon 패턴에 대해서 알아보도록 하겠습니다. SingleTon Pattern이란? OOP에서 모든 객체들은 라이프 사이클(Life cycle)을 가지고 있습니다. 처음에 객체가 생성되고 GC에 의해서 삭제되기까지가 하나의 라이프 사이클입니다. 객체를 여러개를 만들지 않고 1개만 만들고 이를 공유해서 쓰고싶을 때가 있습니다. 이렇게 하면 객체 생성에 대한 비용 및 데이터 공유를 쉽게 할 수 있죠. 대표적인 예를 들면 DB의 Transaction을 관리하는 클래스가 그렇습니다. 이때 사용할 수 있는 pattern이 싱글톤 패턴(singleton pattern)입니다. Singleton Pattern이란 인스턴스를 1개로 제한.. 2019. 9. 23.
[ethereum & java]Smart Contract(Lottery 시스템)과 web3j를 통해 통신해보기 - event & log [ethereum]Ethereum 설치 및 실행 [ethereum]Smart Contract(Lottery 시스템) 제작 [ethereum]ethereum과 통신해보기 [ethereum]Smart Contract(Lottery 시스템)과 통신해보기 - basic [ethereum]Smart Contract(Lottery 시스템)과 통신해보기 - event & log [ethereum & java]web3j를 통해 ethereum과 통신해보기 [ethereum & java]Smart Contract(Lottery 시스템)과 web3j를 통해 통신해보기 - basic [ethereum & java]Smart Contract(Lottery 시스템)과 web3j를 통해 통신해보기 - event & log 안녕하.. 2019. 9. 18.
[Spring Boot] Spring Boot Actuator, Application을 모니터링 하자 안녕하세요! 연휴 잘보내고 계신가요? 저도 오랜만에 고향에 내려와서 연휴를 즐기고 있습니다. 시스템을 운영하다보면 시스템이 사용하고 있는 Thread, memory, Session 등의 요소에 대해서 모니터링은 필수적인 요소 입니다. 운영되는 시스템은 아무리 잘 만들어 졌다고 할지라도 버그가 있을 수 있습니다. 우리는 이런 상황을 대비하기 위해서 모니터링은 필요한 요소입니다. Spring Boot에서는 Spring Boot Actuator라는 자체모니터링 툴을 제공합니다. 오늘은 해당 모듈에 대해서 알아보도록 하겠습니다. Spring Actuator Spring Boot 공식 Reference에 나와있는 Actuator에대한 간략한 설명입니다. Spring Boot includes a number of .. 2019. 9. 14.
[Spring Boot] Session과 Cache의 기본 저장소 ! 개발기간이 길진 않지만 개발하며 정말 효울적으로 사용했던게 Session과 Cache 였습니다. 데이터를 임시 저장할 때 어떤 서비스를 이용하시나요 ? Database에 저장하려니 너무 개발 코스트가 많이 드는것 같고 파일로 저장하자니 또 꺼림직하고 합니다. 이때 사용할 수 있는것이 바로 휘발성으로 사용할 수 있는 Cache와 Session입니다. Spring에서도 해당 기능을 쉽게 구현 할 수 있도록 제공해주고 있는데요. 요즘은 이런 기능을 Redis를 이용하여 많이 쓴다고 합니다. 그런데 Spring은 별도의 벤더를 지정하지 않아도 기본적으로 내장되어있는 Session과 Cache가 있습니다. 오늘은 이것들에 대해서 알아보는 시간을 가져보겠습니다. Cache cache란? : 속도가 상대적으로 느린 .. 2019. 9. 10.
[java & ethereum] Smart Contract(Lottery 시스템)를 web3j를 통해 통신해보기 - basic [ethereum]Ethereum 설치 및 실행 [ethereum]Smart Contract(Lottery 시스템) 제작 [ethereum]ethereum과 통신해보기 [ethereum]Smart Contract(Lottery 시스템)과 통신해보기 - basic [ethereum]Smart Contract(Lottery 시스템)과 통신해보기 - event & log [ethereum & java]web3j를 통해 ethereum과 통신해보기 [ethereum & java]Smart Contract(Lottery 시스템)과 web3j를 통해 통신해보기 - basic Smart Contract(Lottery 시스템)과 web3j를 통해 통신해보기 - event & log 안녕하세요. 저번시간에 우리는 web.. 2019. 9. 9.
[Spring & Design Pattern] Spring에서 발견한 디자인패턴_Proxy Pattern Spring의 특징이라고 하면 IoC(또는 DI), PSA(Portable Service Architecture) 그리고 AOP(Aspect-Oriented Programming)가 있습니다. 이 개념이 무엇인가? 에 대해서는 이번 포스팅에서 언급하진 않겠습니다. 궁금하신 분은 저의 Spring 카테고리에 하나씩 설명이 되어있으니 해당 포스팅들을 참고 부탁드립니다. 저는 다른부분에 대해서 말해보려고 합니다. AOP는 관점지형 프로그래밍으로 main기능이 아닌 기능(Logging / Transaction)을 묶음으로 하여 Main Function을 잘 구성할 수 있게 해주는 방식입니다. 따라서 비즈니스 로직의 중간에 소스코드를 삽입해야하는데 이를 지원해주는 방식은 일반적으로 3가지로 구현이 가능합니다. S.. 2019. 9. 6.