Loading...
2021. 5. 2. 19:38

[FastAPI] 10. Middleware를 이용한 전후 처리

API를 호출할 때 처리 시간이 어느 정도 소모되는지 궁금하다거나 클라이언트로부터 요청을 받았을 때 받은 EndPoint와 데이터가 궁금하다면 어떻게 해야할까요? Middleware Spring에서는 Intercepter, Filter와 같은 중간 처리 방법이 있다면, Flask에서는 App Context 중 after_request나 before_request 등의 콜백 함수로 받아 처리하는 등 여러가지 방법이 있습니다. FastAPI에는 Middleware 패턴을 가지고 있습니다. Middleware 패턴은 API 호출 전후를 중심으로 하나의 콜백 함수가 실행되고 난 뒤, API Router로 요청을 넘기는 패턴입니다. 클라이언트가 요청을 받으면 이 요청은 먼저 Middleware에서 받게 됩니다. ..

2020. 12. 25. 16:42

[FastAPI] 1. GET, POST, PUT, DELETE 등 기본 API 만들고 문서 자동화 해보기

지난 글에 이어서 FastAPI를 이용해서 기본적인 REST API 개발 이야기 두 번째를 이어가보도록 하겠습니다. 우리가 REST API를 개발하면 주요 메소드 종류 5가지가 있는데요. 바로 GET, POST, PUT, DELETE, PATCH 이렇게 5가지 입니다. 물론 이 외에도 OPTIONS가 있지만 이 글에서는 다루지 않겠습니다. 기본 API 만들기 (GET) REST API의 기본 API는 먼저 GET 메소드부터 시작됩니다. GET 메소드는 서버로부터 리소스를 가져올 때 쓰는 READ API 입니다. FastAPI에서는 아래의 두 가지 방법으로 작성할 수 있습니다. from fastapi import FastAPI app = FastAPI() @app.route('/health') async ..

2020. 5. 20. 21:04

[Spring boot] Spring Data Rest를 이용한 REST API 개발 2

지난 포스트에서 Spring Data Rest를 이용해 Domain과 Repository Interface만을 구현하여 HATEOAS에 준수한 REST API 서버를 개발하였습니다. 그러나 REST API를 설계하다보면, HATEOAS의 구조가 마음에 들지 않을 수 있습니다. 예를 들면, 데이터가 비어있을 때 클래스의 정보가 나온다거나, 이 외의 정보를 추가하고 싶다거나, 만약 User 정보를 가져다 준다면, 패스워드 정보와 같은 민감한 정보는 숨겨야할 것입니다. 이번 포스트에서는 Spring Data Rest에 Controller + Service 조합을 넣어서 나만의 REST API를 구현하여 API 서버를 만들어보는 시간을 가져보도록 하겠습니다. RepositroyRestController 지난 포..

2020. 5. 20. 11:13

[Spring boot] Spring Data Rest를 이용한 REST API 개발 1

MVC 패턴에 이어서, 이번에는 Spring Data Rest를 이용하여 REST API 서버를 개발하는 시간을 가져보도록 하겠습니다. MVC 패턴에서는 Domain, Controller, Repository 이렇게 3가지를 이용하였고, 추가로 Service 클래스를 구현하면 더욱 세부적인 처리가 가능하도록 구현할 수 있었습니다. Spring Data Rest는 VC를 생략하고, 오직 Domain과 Repository만을 가지고 아주 쉽게 REST API 서버를 구현할 수 있습니다. 한 번 시작해보도록 하죠. 개발 환경 준비 기존의 MVC 패턴을 사용했던 디펜던시에서 일부 변경하여, Rest Repositores 선택해주면 됩니다. Spring Data Rest에서는 base-path를 지정하여 모든 A..

2020. 5. 19. 21:47

[Spring boot] MVC 패턴을 이용한 REST API 개발

지난 포스트에서 REST API가 무엇인지, 어떻게 설계를 해야하는지에 대해서 다뤄봤습니다. REST API는 HTTP Method를 이용하여 행위를 정하고, URI를 이용해서 리소스를 정하는 방식으로 동작하는 서버였는데요. 이번 포스트에서는 MVC 패턴 + Spring boot 2.x 조합을 이용하여 간단한 REST API 서버를 개발해보도록 하겠습니다. What is MVC ? MVC 패턴에 대해서는 아래의 글에서 다뤄 본적이 있는데요. 혹시 MVC 패턴에 대해 다시 복습해보시거나, 잘 모르신다면, 아래의 글을 보시기 바랍니다. 2016/12/29 - [Programming/JavaFX] - MVC Pattern에 기반한 GUI 라이브러리 JavaFX MVC Pattern에 기반한 GUI 라이브러리 ..

2020. 5. 19. 18:40

[Spring boot] REST API의 기초와 설계

Spring boot가 기존의 Spring에 비해 다양한 설정들을 자동화 시켜 개발자가 설정해야 할 부분을 줄이고, 임베디드 톰캣을 탑재하여 더 쉬운 개발들이 가능해졌다는 것을 알았습니다. 이번 포스트에서는 Spring boot로 서버를 개발해보는 첫 단추인 REST API에 대해 알아보도록 하겠습니다. What is REST API ? REST API란, REST(Representational State Transfer)의 약자로 '대표적인 상태 전달'이라는 의미를 담고 있습니다. 웹과 같은 분산 하이퍼미디어 시스템에서 사용하는 통신 네트워크 아키텍처라고 보시면 됩니다. 본래 웹은 전송 방식으로 HTTP 프로토콜을, 식별 방법으로 URI를 사용하는데, 여기서 혼동하면 안되는 것은 URL과 URI는 다릅..

2020. 4. 21. 10:59

[Spring boot] 다양한 어노테이션을 활용한 HTTP API 구현

지난 포스트에서 IntelliJ IDEA를 이용하여 Spring boot 프로젝트를 만드는 시간에 대해 알아봤습니다. 확실히 기존의 Spring에 비하여 프로젝트 생성 절차가 간단하고, 개발 환경 설정도 까다롭지 않은 모습이었습니다. 이번 포스트에서는 그에 이어서 간단한 HTTP API를 구현하는 시간을 가져보도록 하겠습니다. Hello World 가장 먼저 애플리케이션이 제대로 실행되는지 테스트하는 방법은 어떤 문구를 출력해보는 방법이 가장 좋겠죠? REST API에서 파라미터도 받지 않고, 가장 간단한 메소드로 사용할 수 있는 GET 메소드를 이용해 Hello World를 출력해보도록 하겠습니다. package xyz.neonkid.blogexample import org.springframework..

[GP] Spring boot에서 REST API 개발 시작해보기

이 글은 N.K Dev Lab에서 작성된 글입니다. 안녕하세요. N.K Dev Lab에 글을 안쓴지가 정말 오래되었네요. 올해는 저의 취업 시즌인 만큼 블로그에 글을 쓰는 것에 많이 소홀했었습니다. 더욱이 Dev Lab 리뉴얼과 관련하여 여러 일들이 있었는데, 저의 Dev Lab이 다시 Jekyll로 돌아오게 되었습니다. 이유는 여러가지가 있지만 이제 제가 취업을 하게 되면 현재 하고 있는 일들을 조금 미리 간소화 하는 작업이라고 보시면 될 것 같습니다. 한 가지 예를 들어, 이제 Dev Lab에 올리는 글은 저의 손에 의해 수동으로 NKLAB(Tistory)에 게시되지 않고 자동화 된 코드에 의해서 올라가게 되는 작업 등 Hugo 보다는 Jekyll이 좀 더 편하더군요. 본론으로 넘어가서, 오늘은 Sp..

[GP] Spring boot에서 REST API 개발 시작해보기

이 글은 N.K Dev Lab에서 작성된 글입니다. 안녕하세요. N.K Dev Lab에 글을 안쓴지가 정말 오래되었네요. 올해는 저의 취업 시즌인 만큼 블로그에 글을 쓰는 것에 많이 소홀했었습니다. 더욱이 Dev Lab 리뉴얼과 관련하여 여러 일들이 있었는데, 저의 Dev Lab이 다시 Jekyll로 돌아오게 되었습니다. 이유는 여러가지가 있지만 이제 제가 취업을 하게 되면 현재 하고 있는 일들을 조금 미리 간소화 하는 작업이라고 보시면 될 것 같습니다. 한 가지 예를 들어, 이제 Dev Lab에 올리는 글은 저의 손에 의해 수동으로 NKLAB(Tistory)에 게시되지 않고 자동화 된 코드에 의해서 올라가게 되는 작업 등 Hugo 보다는 Jekyll이 좀 더 편하더군요. 본론으로 넘어가서, 오늘은 Sp..