2022-04-16(토) TIL

황인호·2022년 6월 7일
0

TIL 모음

목록 보기
25/119
  • 오늘해야할일

동선님이 작성한코드 이해할것

모르겠으면 검색해보고 알아들을때까지 반복 작업할것

내가 모르는 내용

  1. Request Properties

1-1. req.params

예를 들어 /user/:name 경로가 있으면 “name”속성을 req.params.name으로 사용할 수 있다.

const {name} = req.params.name

https://params/user/12341234 일 경우 12341234를 받는다.

1-2. req.query

이 속성은 경로의 각 쿼리 문자열 매개 변수에 대한 속성이 포함 된 개체다.

예를 들어 https://query/search?searchWord=구글검색 이면

searchWord 매개변수(parameter)의 구글검색 이라는 값(argument)을 가져온다.

1-3. req.body

JSON 등의 데이터를 담을때 사용한다. (주로 POST로 유저의 정보 또는 파일 업로드를 보냈을 떄)

요청 본문에 제출 된 키-값 데이터 쌍을 포함한다. 기본적으로 이는 정의되어 있지 않으며

express.json( ), express.urlencoded( )와 같은 미들웨어를 사용해야한다.

위의 말은 쉽게 설명하자면 req.body는 body-parser를 사용하기 전에는 default 값으로 Undefined 설정되기 때문에 body-parser를 사용하여 해결해야 오류를 뿜지 않는다.

//예제코드 -app.js

//미들웨어
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extends:true})

//Express 4.16.0 버전 부터 body-parser의 일부 기능이 익스프레스에 내장되어
//아래와 같이 사용이 가능하다.
app.use(express.json())
app.use(express.urlencoded({extends:true})

Extendeds옵션 설명

https://stackoverflow.com/questions/29960764/what-does-extended-mean-in-express-4-0/45690436#45690436

extended 인 경우 false “중첩된 개체”를 게시할 수 없습니다.

person[name] = 'cw'
//Nested Object = { person: { name:cw } }

인 경우 원하는 방식으로 수행할 수 있습니다. extended / true

extended 가 true로 설정되면 URL로 인코딩된 데이터는 qs라이브러리 로 구문 분석됩니다.

extended 가 false로 설정되면 URL 인코딩된 데이터는 쿼리문자열 라이브러리로 구문 분석됩니다.

여기서 qs라이브러리를 사용하면 쿼리 문자열에서 중첩개체를 만들수 있습니다.

★사용예시

const qw = require('qs')
const result = qs.parse("person[name]=bobby&person[age]=3")
console.log(result) // {person : {name:'bobby', age:'3'}}

또한 쿼리문자열 라이브러리는 쿼리문자열에서 중첩개체 생성을 지원하지 않습니다.

★사용예시

const queryString = require('query-string')
const result = queryString.parse("person[name]=bobby&person[age]=3")
console.log(result) // {'person[age]' : '3', 'person[name]':'bobby'}

결론 extended:true ⇒ person이라는 객체안에 값이 같이들어갈수있다 {name:’bobby’,age:’3’}

extended:false ⇒ ‘person[age]’ : ‘3’, ‘person[name]’:’bobby’ 이렇게 각각 나뉘어진다?

Routing이란?

⇒ Routing은 클라이언트의 요청조건(메서드,주소 등)에 대응해 응답하는 방식을 말합니다.

Router란?

⇒ 여기서 말하는 Router는 클라이언트의 요청을 쉽게 처리할 수 있게 도와주는 Express.js 기본 기능중 하나입니다.

profile
성장중인 백엔드 개발자!!

0개의 댓글