- header 속성: 리퀘스트 헤더에 포함된 파라미터. 보통 인증 혹은 권한 부여에 관련되어 있다.

- params 속성: 경로 매개변수를 사용하는 때만 필요하다. 경로 매개별수란 라우팅 할 때 사용하는 경로의 일부를 고정값이 아닌 매개변수로 사용하는 것을 말한다. 예를 들어 결로에 ':cc'와 같이 ':' 문자로 시작하는 부분이 있다면 해당 위치에는 동적인 값을 입력할 수 있는데, 이 값에 req.params.cc를 통해 접근할 수 있다 예를 들어 /global-stat/KR 경로로 요청하면 req.params.cc 값은 KR이다

app.get('/global-stat/:cc', (req, res) => {
const cc = req.params.cc;
...
});

- query 속성: 쿼리문 내의 파라미터. 엔드포인트가 끝난 뒤 물음표 뒤에 온다.

- body 속성: 리퀘스트 바디에 포함된 파라미터. 보통 JSON 형식으로 제출된다.

 

1) header 파라미터

header 파리미터는 보통 인증(Authentication; 특정 identity 제공)과 권한 부여(authorization; 특정 action 허용) 두 가지 목적으로 사용된다.

 

read-only API인 경우엔 키가 필요 없는 경우도 있다. 하지만 대부분의 상업용 API는 API 키나 다른 메서드를 통한 허가를 필요로 한다. 만약 이런 보안이 없다면, 유저들은 별다른 등록 없이 API를 무제한으로 콜할 수 있을 걸이고 이는 곧 수익 창출 문제를 야기한다.

또한 인증 절차가 없다면 유저 데이터를 가져올 때 어려움을 겪게 될 것이고, 악의적인 유저로부터 타 유저의 데이터를 보호할 수 없다. 그리고 누가 나의 API를 사용하는지 혹은 어떤 엔드포인트가 가장 자주 사용되는지 알 수 없게 된다. 즉 API 개발자는 반드시 API를 만들 때 인증과 허가에 대한 방안을 생각해 두어야 한다. 

 

2) param vs query

- resource를 식별해야하는 상황에서는 param 속성이 더 적합하다

- 정렬이나 필터링을 해야하는 상황에서는 query 속성이 더 작합하다.

 


참고

- https://dar0m.tistory.com/222

- https://yuda.dev/250

 

처음 환경설정하는 부분부터 막혔다. 

나의 환경은 옛날 zsh를 사용해보자는 목적으로 윈도우에 wsl을 이용해 우분투 환경에서 코딩을 연습하고 있다.

여기서 비롯된건지 mysql 설치를 할 때 갖은 문제들이 발생하는데 해결까지 거의 3일이라는 시간이 걸렸다. 

그동안 설치와 제거를 수 없이 반복해서 다른 분들은 이런 고생을 안하길 바란다. 

 

첫번째 마주한 오류.

dpkg: error processing package mysql-server (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-8.0
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

  출처 : https://stackoverflow.com/questions/43446218/dpkg-error-processing-package-mysql-server-dependency-problems

기존의 있던 mysql-server-8.0과 의존성 문제가 있어 에러가 나왔다. 

해결 방법을 검색해 보면 모두 삭제한뒤에 재설치하는 과정이 대부분인데

몇가지 부분을 놓치면 무한 삭제, 설치를 반복하게 돤다.

우선 셀은 zsh로하면

sudo apt-get purge 'mysql*'

과 같은 명령어에서 제대로 작동하지 않기 때문에 bash 셀로 바꿔줘야한다. 

bash 셀로 바꾸고 나면

sudo apt-get clean
sudo apt-get purge 'mysql*'
sudo apt-get update
sudo apt-get install -f
sudo apt-get install mysql-server-8.0
sudo apt-get dist-upgrade

출처 : https://stackoverflow.com/questions/69100145/why-is-showes-error-processing-package-mysql-server-8-0-configure?utm_source=pocket_mylist

과정을 실행한다. 

여기서 두번째 부분 

install -f전에 리눅스 시스템을 재부팅해주어야한다.

이 부분이 안되어도 무한 설치 무한 삭제를 반복하게 된다.

 

리눅스 시스템을 재부팅하려고 검색을 했을 때 나온 명령어는 작동을 하지 않았다.

wsl 환경에서 작동을 하는 리눅스 시스템은 아이러니하게도 윈도우에서 재부팅을 해줘야한다고 한다. 

출처 : https://jootc.com/p/202007093546

Restart-Service LxssManager

이후 계속 진행하다보면 정상적으로 설치된다.

 

설치를 하고 보안 설정을 진행하는 과정에서 한번더 막히게 된다. 

Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

이 오류는 비교적 쉽게 해결하게 되었다. 

출처 :  https://easy7.tistory.com/482

sudo service mysql restart

이제 마지막 오류를 맞이한다. 

비밀번호 보안 레벨 설정을 마치고 내 비밀번호를 설정하는데 갑자기 이런 오류가 떳다.

... Failed! Error: SET PASSWORD has no significance for user 'root'@'localhost' as the authentication method used doesn't store authentication data in the MySQL server. Please consider using ALTER USER instead if you want to change authentication parameters.

출처 : https://exerror.com/failed-error-set-password-has-no-significance-for-user-rootlocalhost-as-the-authentication-method-used-doesnt-store-authentication-data-in-the-mysql-server/

sudo mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by 'mynewpassword';

 

이 부분을 마친뒤 다시

sudo mysql_secure_installation

보안 레벨 설정을 진행하게되면 무사히 설치를 완료하게 된다. 

+ Recent posts