* const db로 여러 클래스에서 사용시, 싱글톤여부
export new Class => 싱글톤
* form -data 받아서 db에 넣기
const member = {
id: null,
loginId: loginId,
name: name,
pw: password
};
객체 필드명 주의
서비스, 컨트롤러, 리포지토리 모두 같은 필드명을 써야함
현재 controller에서 req.body를 파싱후, member 객체로 만들고 서비스에 전달
이게 best 인지?
* query 문제
- 결론 : rows에는 결과객체들이 배열로 담겨있다.
* 객체를 response로 찍는방법
'ok'라는 문자열을 응답으로 보내는 방법은 매우 간단합니다. Express.js를 사용한다고 가정하고, 여러 가지 방법을 소개해 드리겠습니다:
- res.send() 사용:
이 방법은 가장 간단하고 직접적인 방법입니다.
res.send('ok');
- res.end() 사용:
이 메서드는 응답을 종료하고 데이터를 전송합니다.
res.end('ok');
- res.json() 사용:
JSON 형식으로 응답을 보내고 싶을 때 사용합니다.
res.json({ message: 'ok' });
- res.status().send() 사용:
상태 코드와 함께 응답을 보내고 싶을 때 사용합니다.
res.status(200).send('ok');
- res.write()와 res.end() 조합:
응답 본문을 작성한 후 응답을 종료합니다.
res.write('ok');
res.end();
- res.type()과 res.send() 조합:
Content-Type을 명시적으로 설정하고 싶을 때 사용합니다.
res.type('text/plain').send('ok');
실제 사용 예시:
app.post('/register', async (req, res) => {
try {
// 회원가입 로직 실행
await registerUser(req.body);
// 성공 시 'ok' 응답
res.send('ok');
} catch (error) {
// 에러 발생 시
res.status(400).send('Error occurred');
}
});
주의사항:
- 응답 형식의 일관성: API 전반에 걸쳐 일관된 응답 형식을 유지하는 것이 좋습니다. 단순히 'ok'만 보내는 것보다는 JSON 형식으로 상태와 메시지를 함께 보내는 것이 더 일반적입니다.
- 상태 코드: 적절한 HTTP 상태 코드를 함께 보내는 것이 좋습니다. 성공적인 요청의 경우 200 OK나 201 Created 등을 사용할 수 있습니다.
- 클라이언트 요구사항: 클라이언트 측에서 어떤 형식의 응답을 기대하는지 고려해야 합니다.
- 보안: 민감한 정보가 응답에 포함되지 않도록 주의해야 합니다.
가장 권장되는 방식:
실제 프로덕션 환경에서는 단순히 'ok'만 보내는 것보다 더 구조화된 응답을 사용하는 것이 좋습니다. 예를 들어:
res.status(200).json({
status: 'success',
message: 'Operation completed successfully'
});
이렇게 하면 클라이언트에서 응답을 더 쉽게 처리할 수 있고, 추후에 추가 정보를 포함시키기도 용이합니다.
* 쿠키만들고 res에 추가하기
* req에서 cookie 얻고 null인지 체크하는법(?)
const cookieParser = require('cookie-parser');
const app = express();
app.use(cookieParser());
app.get('/check-cookie', (req, res) => {
const specificCookie = req.cookies.specific_cookie_name;
if (specificCookie == null) {
res.send('Specific cookie not found');
} else {
res.send(`Cookie value: ${specificCookie}`);
}
});
* 쿠키 삭제구현
- req.cookies를 하면 쿠키들이 { cookieName : uuid } {}, .... 이런식으로 들어있다.
- 이를 순회하면서 내가 찾기를 원하는 쿠키이름을 찾는다.
- 그것의 value를 return한다.
- value가 uuid 이므로, 곧 sessionStore의 key이다.
- 서버의 세션에서 지운다.
#findCookie(req, cookieName){
if(req.cookies === null){
return null;
}
//쿠키들이 들어있는 Object Type : { 쿠키이름 : uuid } , { }
const cookies = req.cookies;
const keys = Object.keys(cookies) // ['name', 'weight', 'price', 'isFresh']
for (let i = 0; i < keys.length; i++) {
const key = keys[i] // 각각의 키
const value = cookies[key] // 각각의 키에 해당하는 각각의 값
if(key === cookieName){
return value;
}
}
}
expire(req){
const sessionCookieVal = this.#findCookie(req,this.SESSION_COOKIE_NAME);
if(sessionCookieVal){
this.sessionStore.delete(sessionCookieVal);
}
console.log('expired session: '+ this.sessionStore);
}
'CS > HTTP' 카테고리의 다른 글
24.9.9. 개발일지// rest api (0) | 2024.09.09 |
---|---|
24. 9.4. 개발일지 // 커스텀 세션, 쿠키생성방법 (0) | 2024.09.04 |
[Http] http req에서 userId 얻는법 (0) | 2024.08.28 |
[HTTP] 클라에서 서버로 데이터 전송 과정 (0) | 2024.08.22 |
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 해결 (0) | 2024.08.22 |