프레임워크25 [Spring] @RequestBody란 무엇인가? 사용법은? 이전에 Header와 Parameter를 이용하여 데이터를 가져오는 내용을 정리했다. 위와 같은 방식은 GET이나 DELETE와 같이 Body가 없을때 사용하는 방식이다.(혹은 인증이나) 그렇지만 위와 같은 방식은 보안이 취약해지거나 데이터가 많아지면 문제가 발생한다. 그래서 생성과 수정의 역할을 담당하는 POST와 PUT에는 Body를 붙여 사용할 수 있다. Body에 있는 데이터를 가져오는 방법은 아래와 같다. @PostMapping("/users/body") public ResponseEntity requestBody(@RequestBody Map body) { User newUser = new User(1L, body.get("name"), body.get("email")); return Resp.. 프레임워크/Spring 2021. 4. 24. [Spring] Header에서 데이터 가져오기 @RequestHeader 우리가 클라이언트에게 데이터를 받는 방법이 여러개가 있는데 이번에는 Header를 이용하여 데이터를 가져오는 방법을 정리했다. @GetMapping(path = "/message", headers = "HEADER") public ResponseEntity messageForHeader(@RequestHeader HttpHeaders header) { return ResponseEntity.ok().body(header.getFirst("HEADER")); } Parameters에서의 params와 비슷하게 여기서는 headers를 추가하여 필요한 내용을 강제할 수 있다. 받을때 사용하는 애너테이션 또한 @RequestHeader를 이용하여 header를 받아 데이터를 꺼내서 사용한다. 다른 방식으로 아.. 프레임워크/Spring 2021. 4. 23. [Spring] Parameter에서 데이터 가져오기 @RequestParam 우리가 클라이언트에게 데이터를 받는 방법이 여러개가 있는데 이번에는 Parameter를 이용하여 데이터를 가져오는 방법을 정리했다. Parameter로 데이터를 보내는 방법은 URL 뒤에 ?name=mungto 이러한 방식이다. Spring에서 처리하는 방법은 사용방법은 아래와 같다. @GetMapping(path = "/message") public ResponseEntity messageForParam(@RequestParam("name") String name) { ... } 변수명과 parameter이름이 같다면 괄호안에 내용은 생략이 가능하다. @GetMapping(path = "/message") public ResponseEntity messageForParam(@RequestParam St.. 프레임워크/Spring 2021. 4. 22. [Spring] consumes와 produces의 차이 Mapping을 할때 우리는 받고싶은 데이터를 강제를 함으로써 오류상황을 줄일 수 있다. 이걸 위해 사용하는 것 중 하나가 Media Types이다. 들어오는 데이터와 나가는 데이터를 정하여 처리를 할 수 있다. consumes는 들어오는 데이터 타입을 정의할때 이용한다. 예를 들어서 내가 json타입을 받고 싶다면 아래와 같이 처리가 가능하다. @PostMapping(path = "/pets", consumes = MediaType.APPLICATION_JSON_VALUE) public void addPet(@RequestBody Pet pet) { // ... } 이렇게 처리를 하게되면 해당 uri를 호출하는 쪽에서는 헤더에 보내는 데이터가 json이라는 것을 명시해야 한다. Content-Type:.. 프레임워크/Spring 2021. 4. 21. [Spring] URI patterns는 무엇인가? Spring으로 개발을 하다보면 정확하게 딱 떨어지는 URI를 만들지 못할때가 있다. 이런 내용을 물론 RequestParam, Body에 데이터를 넣어서 처리할 수도 있지만 이걸 쓰기 애매할때도 있다. (중간에 여러가지 변경되는 내용이 있다거나 메서드상 GET인데 Body를 써야해서 Post와 같은것을 사용해야 한다거나... ) 이럴때는 보통 URL 패턴을 이용하게 된다. {PathValiable} @GetMapping("/owners/{ownerId}/pets/{petId}") public Pet findPet(@PathVariable Long ownerId, @PathVariable Long petId) { // ... } @GetMapping에서 {} 안에 있는 것들이 유동적으로 변경이 가능한 P.. 프레임워크/Spring 2021. 4. 20. [Spring] @RequestMapping이란? 우리는 특정 uri로 요청을 보내면 Controller에서 어떠한 방식으로 처리할지 정의를 한다. 이때 들어온 요청을 특정 메서드와 매핑하기 위해 사용하는 것이 @RequestMapping이다. @RequestMapping에서 가장 많이사용하는 부분은 value와 method이다. (더 많지만 여기서는 여기까지만) value는 요청받을 url을 설정하게 된다. method는 어떤 요청으로 받을지 정의하게 된다.(GET, POST, PUT, DELETE 등) @RequestMapping(value = "/hello", method = RequestMethod.GET) 예시를 간단하게 들어보면 이런식으로 가능하다. 그런데 만약 /hello라는 내용으로 GET, POST, PUT, DELETE를 만들려면 어떻.. 프레임워크/Spring 2021. 4. 8. [Spring] @Controller와 @RestController의 차이 초기에는 Spring이 프론트와 백엔드의 역할을 같이하고 있었다. 그래서 @Controller는 화면에 보여주는 View를 반환하는 기능을 가지고 있었다. 그렇지만 Data만 반환을 해야하는 경우가 점차 많이 생기게 되었다. (RestApi 서버인경우, 화면의 특정 부분만 렌더링 할 경우 등이 있다.) 이럴때는 데이터를 반환하기 위해 @ResponseBody를 이용하여 Json 형태로 데이터를 반환한다. 그런데 계속해서 @ResponseBody를 붙이는 것에 대한 불편함이 생겼고 이에따라 이걸 합친 기능이 만들어지게 된다. 이것이 바로 @RestController이다.(Spring 4버전 이후로 출시되었다고 한다.) 즉 @RestController = @Controller + @ResponseBody가 .. 프레임워크/Spring 2021. 4. 7. Django에서 mysql 연동하기 Django에서는 기본데이터베이스가 sqlite로 설정되어있다. 특정상황에서는 경량화된 sqlite가 아닌 mysql과 같은 데이터베이스를 사용해야 할 수 있다. 그래서 Django와 MYSQL을 연동하면서 경험했던걸 적어보려 한다. 1. mysqlclient 설치하기 pip install mysqlclient 2. django settings.py 수정하기 settings.py에 있는 DATABASES 를 수정해줘야 한다. 아래는 공식문서에 적혀있는 내용이다. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/path/to/my.cnf', }, } } # my.cnf [cl.. 프레임워크/Django 2020. 9. 13. AWS EC2 gunicorn을 이용한 django 배포하기 django에서 기본적으로 지원하는 runserver는 개발용이기 때문에 1개의 프로세스만을 이용하여 느리다는 단점이 있다. 따라서 실제서버에서 배포를 하기위해서는 gunicorn같은것의 지원을받아 배포를 하게된다. 이번에는 gunicorn(g유니콘)의 간단한 사용법을 적어본다. 1. gunicorn 설치 pip install gunicorn 2. gunicorn 셋팅 settings.py 에서 정적파일 저장할 경로 추가 STATIC_ROOT = '/static/' manage.py가 있는 경로에서 아래와 같이 실행 python manage.py collectstatic 아래경로에 파일 생성 /etc/systemd/system/gunicorn.service WorkingDirectory에는 manage... 프레임워크/Django 2020. 9. 12. 장고를 왜 사용할까?(특징, 장단점) 나는 서버를 만들때 django를 이용해서 만들고 있다. 그렇지만 한국에서는 대부분 spring을 이용한 서버를 만들고 있다. 왜 장고를 선택해 서버를 만들고 있는지 말해야 하는 일이 생길때를 대비하여 작성했다. 장고의 홈페이지에 처음 들어가면 나오는 화면이다. 마감일이 있는 완벽주의자를 위한 웹 프레임워크라고 적혀있다. 엄청나게 어려운 기능까지는 아니지만 장고를 이용하여 전체적인 웹도 만들어 보았고 API 서버를 만들어 본 경험을 토대로 생각하면 맞는말이라고 생각한다. 장고를 사용하면서 생각한 장점은 아래와 같다. 1. 장고는 Python 기반 웹프레임 워크이다. - 따라서 파이썬에서 가능한 모든 동작이 가능하며, 강력한 라이브러리들이 많다. 2. 반복적으로 구현해야 하는부분은 이미 만들어져 있다. -.. 프레임워크/Django 2020. 8. 14. 유니티와 sqlite 연동하기 C#(다운, 사용법, PC, android, DB, query) 제가 sqlite를 진행하면서 겪었던 사항들이 많아서 다른 분도 저처럼 고생 안 했으면 좋겠다는 생각에 sqlite 연동 법을 쓰게 됐습니다. 다운로드부터 쿼리 던지는것까지 해보도록 하겠습니다. (네이버 블로그에서 이전했기때문에 내용이 조금 다를 수 있습니다. 초기작성 : 2019.03.10) 목차 1. Sqltie 다운받기 2. DB 생성하기 3. 스크립트(Script) 작성(코딩) DB 이동하기 연결 상태 확인하기 DB 읽어오기 3-4 DB 삽입, 삭제, 수정 4. 쿼리의 이해 읽기 삽입 삭제 4수정 1. Sqlite 다운받기 아래의 사이트에 들어가서 자기와 맞는 버전을 다운로드합니다. https://www.sqlite.org/download.html SQLite Download Page Templa.. 프레임워크/Unity 2020. 6. 26. Django 시작하기 Django(장고)란 Python 기반의 웹 애플리케이션 프레임워크로 간단하게 웹을 만드는데 도움을 줍니다. 특이 사항으로는 다른 프레임워크에서는 MVC(모델-뷰-컨트롤러)패턴 인데 여기서는 MTV(모델-템플릿-뷰)패턴을 사용한다. Django의 장점 : 데이터베이스를 연동하는데 힘을 들이지 않아도 된다. 회원관련 기능을 지원하는 라이브러리가 편하다. 기타 다양하고 강력한 라이브러리들이 많다. 가상환경(venv)를 이용하여 Django를 시작하겠습니다. 시작 전에 Python과 VS CODE를 설치해야 합니다. 프로젝트를 시작할 폴더에 들어가 vscode를 킵니다. 설치할때 환경변수 추가를 누르면 생깁니다. 만약 환경변수추가를 하지 않았다면 vscode를 키고 cd명령어를 이용하여 해당 폴더까지 이동하시.. 프레임워크/Django 2020. 4. 24. 이전 1 2 3 다음 💲 광고입니다.