REST란 무엇이고, RESTful하게 API를 디자인한다는 것은 무엇인지 설명하시오.
참고 링크들
api개념
rest api
모든 자원(resource)들을 하나의 endpoint에 연결 해좋고 각 endpoint는 그 resource와 관련된 내용만 관리하게 하자는 방법론
모든 resource에 고유한 uri(uniform resource identifire 유한한 자원 인식표?)를 부여해서 자원에 대한 주소를 지정하는 방법론
자원은 모든 데이터를 말한다고 보면됨
자원의 표현이란 그 자원을 표현하기 위한 이름이라고 보면됨
상태를 전달한다는 의미는?
데이터가 요청되어지는 시점에서 자원의 상태(정보를 전달한다)
json이나 xml을 통해서 데이터를 주고 받는다고 함
1.
자원(resource)을 http uri를 통해 명시
2.
http method(post, get, put, delete)를 통해 해당 자원에 대한 CURD Operation을 적용하는것
rest ful 하다는 것의 의미는?
rest full
url urn uri 의 개념
질문 2 : REST API는 왜 필요한가요?
아래와 같은 장점이 있기 때문에 사용함
1.
Open API를 제공하기 쉽다.
2.
멀티플랫폼 지원 및 연동이 용이하다.
3.
원하는 타입으로 데이터를 주고받을 수 있다.
4.
기존 웹 인프라(HTTP)를 그대로 사용할 수 있다.
처음 rest api가 제안되었을때는 기존 http라는 웹의 장점을 제대로 활용하지 못하는 부분을 보완하기 위해 만들어진 취지의 스킬이라고 보면 될것 같음.
rest api를 사용하면서 기존에 ajax와 html을 전달하는 과정에서 사소한 변화에도(버튼 글자변화..? 같은 것들) 지속적으로 html을 전송하는 것과 같은 데이터 낭비가 너무 심했던 문제를 해결할 수 있었음.
rest 방식을 사용하면서 확장석 확보, 분산시스템 구성 가능, 데이터 소모량 감소 등이 가능해졌음
+rest api 의 단점도 있다.
1.사용할 수 있는 메소드가 4가지밖에 없다.
2.분산환경에는 부적합하다.
3.HTTP통신 모델에 대해서만 지원한다.
+추가
질문 3 : 장고 ORM의 원리를 설명해주세요
참고 링크
orm은 장고에서만 쓰이는 기술이 아니라
대부분의 프레임워크에서 사용되는 기술이다
orm 이란?
→ 호환되지 않는 시스템 간에 객체 지향 프로그래밍 언어를 사용함으로써
데이터를 변환해주는 기술
장고 orm은 당연히 python SQL
파이썬과 sql 간의 데이터 변환을 해주는 역할을 한다
작동과정
1.
statement
2.
mapping
3.
sql
장고 orm덕분에 sql문을 사용하지 않아도 데이터를 다루고 관리할 수 있음
+여기에 db어댑터와 드라이버라는것이 필요함
대표적으로 mysql의 mysqlclient 와 postgersql의 psycopg2 가 있음
Django 파일로 보면 model ‘migrations’ files db.sqlite3
why orm?
orm의 장점
1.
원하는 언어로 (장고는 파이썬) orm작성가능
2.
db간 전환이 쉽다
3.
orm은 틀에서 벗어나 추가적인 기능을 제공함
4.
sql문에 익숙하지 않으면 orm으로 빠른 시간안에 더 나은 쿼리를 수행할 수 있음
orm의 단점
1.
sql을 직접 사용하면 쿼리를 잘 튜닝해서 사용할 수 있음
반면에 orm을 사용하게되면 퍼포먼스 저하요인을 놓치거나 발생 시킬 수 있음
2.
임피던스 불일치
a.
객체 및 관계형 테이블에서 데이터 이동이 이루어짐
b.
임피던스 불일치는 sql과 프로그래밍 언어 사이에서 데이터 구조, 기능 등의 차이로 발생하는 충돌을 말함
ex> 대표적으로 장고로 개발중 model을 수정하고 migrate를 했는데 안되는 경우가 있다. 이경우 임피던스 불일치로 인해 column이나, row나 뭐든 sql에 만들어져있는 테이블과 새로 작성된 model을 orm을 통해 sql에 적용하려는 과정에서 충돌이 일어나는 현상이라고 볼 수 있음