전체 글
-
서버에서 Validation & Sanitization 수행하기Project/트윗 클론코딩 2023. 9. 24. 20:06
클라이언트 측에서 요청에 담긴 값을 스키마에 맞게 올바르게 담겨왔는지 검사하는 단계이다 만약 누락되거나 기준을 만족하지 못한다면 적절한 메세지를 클라이언트에 보내는 방식인데 우리가 DB와 통신하거나 서버에서 동작하는 시간단위 전부가 비용이기 때문에 적절하지 않은 데이터가 들어왔을 때 즉각적으로 처리해주는 게 좋다 클라이언트에서 validation을 통해 올바른 값을 서버에 전달하는 것도 좋지만 지금 클라이언트 측 validation은 optional한 상태이기에 서버단에서 validation을 수행하는 코드를 추가했다. 그리고 sanitization은 한국어로 번역하면 소독인데 양식은 맞게 들어왔으나 대소문자가 틀리다던지 그런 데이터들을 스키마에 맞게 적절하게 처리한 후 DB에 저장하거나 쓰는 작업을 말..
-
서버 아키텍쳐 구축하기Project/트윗 클론코딩 2023. 9. 23. 20:51
아키텍처 패턴은 레이어 패턴, 클라이언트 서버 패턴, 파이프 필터 패턴 등 여러가지가 있는데 이번 강의에서는 Model View Controller 패턴을 서버에 응용해서 적용했다 Model = Data, View = Route, Controller는 그대로 Controller로 응용하여 적용했다. 먼저 Model 부분이다 let tweets = [ { id: 1, username: "bob", name: "Bob", text: "hello", createTime: "2023-01-01 13:11:10", }, { id: 2, username: "jack", name: "Jack", text: "hey~! nice to meet you!", createTime: "2023-01-01 13:11:10", ..
-
REST API 서버 구축하기Project/트윗 클론코딩 2023. 9. 22. 20:59
const express = require('express') const fs = require('fs') const app = express() app.get('/tweets', (req, res) => { const data = JSON.parse(fs.readFileSync('./tweet.json','utf-8')) res.json(data) }) app.post('/tweets', (req,res) => { const newTweet = req.body.newTweet fs.appendFileSync('./tweet.json',newTweet,'utf-8') res.end() }) app.get('/tweets?username=:username', (req,res) => { const data ..
-
REST API 디자인하기Project/트윗 클론코딩 2023. 9. 19. 10:19
트윗에 관한 일련의 정보와 로그인에 대한 API만 있으면 충분할 것 같다. 기능 주소 Method / Req Res Description 모든 트윗 불러오기 /tweets GET 200, { tweets : [] } 트윗 작성 /tweets POST / {tweetid : "text", userid : "text", content : "text", createTime : "date"} 201, Created 작성자별 tweet 조회 /tweets/:id GET / {userid : "text"} 200, {tweets : [filterd]} 주소에서 전달받은 params에 있는 id로 작성자를 filtering하여 특정 사용자가 작성한 트윗만 전송한다 내가 쓴 트윗 수정하기 /tweets/:tweetId..