CodeStates/Backend

Section2 / Unit10 : Web Server(req)

yeeendy 2023. 6. 5. 18:49

코드스테이츠 38일차!

리액트도 참 어려웠지만 서버는 진짜 너무 헷갈린다

익숙하지 않아서 그런 거겠지만 눈에 바로바로 보이지 않는 점이 좀 고단하다

포스트맨을 적극 활용하자!

포스트맨 사용법도 더 공부해보자...주눅들지 말자,,,,

 

Statesairline Server과제에서 잘 모르겠던 점

구조분해할당 하는 방법(배열은 익숙한데, 객체부분이 익숙하지 않다)

req, res의 의미(앞 글에서 어느정도 정리했다)

req.params / req.query / req.body 차이

req.params

→ 라우터의 매개변수

ex) /:id/:name 경로가 있으면 ":id"속성과 ":name" 속성 -> req.params.id, req.params.name 으로 사용 가능

=> www.example.com/post/1/jun일 경우 1과 jun을 받는다

 

req.query

→ 경로의 각 쿼리 문자열 매개 변수에 대한 속성이 포함 된 개체다. (주로 GET 요청에 대한 처리)

ex) www.example.com/post/1/jun?title=hello!이면, title=hello! 부분을 객체로 매개변수의 값을 가져온다

 

req.body

→ JSON 등의 바디 데이터를 담을 때 사용

→ 주로 POST로 유저의 정보 또는 파일 업로드(formdata)를 보냈을 때 사용

→ 요청 본문에 제출된 키-값 데이터 쌍을 포함

 

참조

https://inpa.tistory.com/entry/EXPRESS-%F0%9F%93%9A-reqparams-reqquery-reqbody-%F0%9F%A4%94-%EC%A0%95%EB%A6%AC

 

구조분해할당

배열이나 객체 속성을 분해하여 그 값을 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식

// 기본 할당
var o = {p: 42, q: true};
var {p, q} = o;

console.log(p); // 42
console.log(q); // true
// 선언 없는 할당
var a, b;
({ a, b } = { a: 10, b: 20 });
console.log(a); // 10
console.log(b); // 20

참고: 할당 문을 둘러싼 ( .. )는 선언 없이 객체 리터럴(object literal) 비구조화 할당을 사용할 때 필요한 구문입니다.

{a, b} = {a:1, b:2}는 유효한 독립 구문이 아닙니다. 좌변의 {a, b}이 객체 리터럴이 아닌 블록으로 간주되기 때문입니다.

하지만, ({a, b} = {a:1, b:2})는 유효한데, var {a, b} = {a:1, b:2}와 같습니다.

( .. ) 표현식 앞에는 세미콜론이 있어야 합니다. 그렇지 않을 경우 이전 줄과 연결되어 함수를 실행하는데 이용될 수 있습니다.

// 새로운 변수 이름으로 할당하기
var o = {p: 42, q: true};
var {p: foo, q: bar} = o;

console.log(foo); // 42
console.log(bar); // true
({a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40});
console.log(a); // 10
console.log(b); // 20
console.log(rest); // {c: 30, d: 40}
// 기본값
var {a = 10, b = 5} = {a: 3};

console.log(a); // 3
console.log(b); // 5
// 기본값 갖는 새로운 이름의 변수에 할당하기
var {a: aa = 10, b: bb = 5} = {a: 3};

console.log(aa); // 3
console.log(bb); // 5