개발 R.I.P.

8.08 Dev.Feedback (Request properties)

편행 2021. 8. 8. 15:55
반응형

서버 관련한 공부를 하던 중 정확하게 알지 못해 어영부영 알고 있었던 것들을 정확하게 정리하고자 한다.

 

Request.body(본문)

본문은 요청의 마지막 부분에 들어간다. 모든 요청에 본문이 들어가지는 않는다. GETHEAD, DELETE , OPTIONS처럼 단순히 리소스를 가져오는 요청은 보통 본문이 필요가 없어서 없는 경우가 대다수이다. 업데이트를 하기 위한 요청(POST, PUT)을 할 때 본문을 작성하여 서버에 데이터를 전송한다. 보통 (HTML 폼 데이터를 포함하는) POST 요청일 경우에 많이 사용된다.

 

XML, JSON, Multi form 등의 데이터를 담고있다. 주소에서 확인할 수 없다. 본문에 어떤 내용이 담겨있는지 확인하고 싶을 때는 개발자 도구를 통해 확인하면 된다. 일반적으로 본문은 서버에 업로드 하거나 다운로드 할 때 사용된다. 예를 들어 내가 어떤 파일을 이름과 mime type을 정해서 업로드 할 때 body에 태워서 요청하는 것이다.

 

Request.query

?id=1, ?/type=post&returnURL

 

쿼리스트링은 일반적으로 이름 - 값의 쌍으로 이루어진 컬렉션이고 옵션이다. 쿼리스트링의 특징은 물음표(?) 기호로 시작한다. 이름-값 쌍은 각각 엠퍼샌드(&)로 구분을 한다. &로 연결하여 여러 개의 데이터를 넘길 수 있다. 이름과 값은 모두 URL 인코드를 사용해야 한다. 자바스크립트에서는 이 목적을 위해 내장함수 encodeURLComponent가 존재한다. 퀴리스트링을 검색 문자열(search string) 혹은 서치(search)라고 부르기도 한다. 

 

주소 바깥 ? 이후의 변수를 담는다. 예를 들어보면, 만일 서버 상에 req.query가 무엇인지 확인하고자 했을 때, 아래 URL에서는  

 

https://newfind.tistory.com/newpost/?check=returnURL

 

? 이후 check라는 매개변수(parameter)의 값인(arguments)  returnURL을 가져온다. 즉 객체를 확인해보면, 아래와 같이 구성되어 있는 것이다. 서버에서는 Request.query를 Query.parameter라고 칭한다.

request.query = {check: returnURL}

 

 

encodeURLComponent 작동 방식

==> 스페이스는 + 기호로 변환, 다른 특스 문자들은 숫자형 문자 참조로 변환, 쿼리스트링을 검색 문자열


Request.param

Path Variable 는 이름에서도 알 수 있듯이 경로를 변수로서 사용한다.  각각의 게시물을 보기 위해서는 게시물의 id를 서버에 넘겨줘서 사용한다. Path Variable 를 사용하면 다음과 같이 나타냅니다.

 

https://newfind.tistory.com/newpost/80

 

위의 링크로 예로 들면, returnURL을 담는 것이다. 서버에서는 Path Variable로 칭한다.

request.params = {returnURL}

 

Path Variable vs Query parameter

어떤 구체적인 resource를 식별해야 하는 상황에서는 Path variable을 사용하는 것이 좋다.

 

예를 들면 newfind.tistory.com/80을 요청하면 id가 80인 게시글만 가져오는 것이다.

# id가 80인 게시글을 가져온다.

newfind.tistory.com/80

 

Query parameter는 리소스들을 정렬하거나 필터일 할 때 사용하는 것이 좋다. 구성 자체가 키-값 쌍으로 이루어져 있기에 필터링을 하거나 정렬을 하는데 더욱 유리하다.

# writer가 happydrum인 게시글들을 가져옵니다.
/newfind/list?writer=happydrum

 

Query string(Path variable, Queryparameter) vs body 

https://stackoverflow.com/questions/25385559/rest-api-best-practices-args-in-query-string-vs-in-request-body

 

REST API Best practices: args in query string vs in request body

A REST API can have arguments in several places: In the request body - As part of a json body, or other MIME type In the query string - e.g. /api/resource?p1=v1&p2=v2 As part of the URL-path -...

stackoverflow.com

 

반응형