Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- js
- 노드교과서
- removeCookie
- @redux-toolkit
- 자바스크립트#JS#slice#splice
- for~in/for~of
- 자바스크립트#JS#var#let#const#undefined#null
- User Flow
- 자바스크립트
- ㄷㅌ
- variable#function
- dom
- CSS
- JS#3일차달리자#초반인데#시간금방~
- https://developer-talk.tistory.com/299
- https://www.daleseo.com/js-array-slice-splice/
- cmarket
- UI
- https://lo-victoria.com/introduction-to-redux-toolkit-for-beginners
- 헷갈린다~
- redux상태유지
- Beesbeesbees
- 내장고차함수
- 자바스크립트#조건문#문자열
- https://dasima.xyz/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%A0%9C%EA%B3%B1-math-pow-%EA%B3%84%EC%82%B0/
- slice/splice/split
- toString#String
- UX
- children vs childrenNodes
- react
Archives
- Today
- Total
Daily Front_Minhhk
stateLine Server 본문
Express 공식문서에서 req.query , req.params를 사용하는 방법을 확인!
req.query
**// localhost:3000/topic?id=1&name=foo
app.get('/topic', function(req, res) {
res.send(req.query.id + ',' + req.query.name);
})**
위 코드는 id과 name 값을 동시에 가져올 수 있다. localhost:3000/topic?id=1&name=foo 에 들어간다고 가정하자.
화면에 1,foo 가 보일 것이다.
**// localhost:3000/topic?id=1
app.get('/topic', function(req, res) {
var topics = [
'JavaScript is ....',
'Nodejs is ....',
'Express is ....',
];
res.send(topics[req,query.id]);
})**
위 코드는 배열로 값들을 가져온다. localhost:3000/topic?id=1 에 들어간다고 가정하면, id가 1이기 때문에 topic[1]인 Nodejs is....가 화면에 보인다.
실제로는 topics에 파일이나 데이터베이스로 교체해서 짧은 코드로 값을 가져올 것이다.
req.params
**//localhost:3000/page/CSS
app.get('page/:pageId', function(req, res) {
res.send(req.params);
})**
localhost:3000/page/CSS에 들어간다고 하면 아래와 같은 결과가 나올 것이다.
{"pageId : "CSS"}
req.params안에는 객체가 들어가 있고, 그 객체의 pageId 프로퍼티 값을 통해서 CSS라는 값을 가져온다는 뜻이다.
**//localhost:3000/page/CSS/WEB
app.get('page/:pageId/:chaperId', function(req, res) {
res.send(req.params);
})**
**{"pageId" : "CSS", "chaperId": "WEB"}**
response는 어떠한 작업을 요청한 곳에 무엇인가를 돌려주는 역할을 한다.
app.get('/', (req, res) => {
res.send()
res.json({ message: "'I'm Jason Mraz." })
res.end()
})
- res.send() : 정보를 돌려보내 주는 가장 기본적인 역할을 수행한다.
- res.json() : 정보를 돌려보내긴하는데, json 형태로 바꿔서 돌려준다.
- res.end() : 주로 서버가 작동을 안하거나 오류가 있을 경우, 특정 문구를 나타내고 응답을 종료하고자 할 때 사용된다.
flightController.js
const flights = require("../repository/flightList");
const fs = require("fs");
module.exports = {
// [GET] /flight
findAll: (req, res) => {
const { departure_times, arrival_times, destination, departure } =
req.query;
// TODO:
//! 요청 된 파라미터 departure_times, arrival_times 값과 동일한 값을 가진 항공편 데이터를 조회합니다.
if (departure_times && arrival_times) {
// 다음 데이터 조회 filter
let timeList = flights.filter((list) => {
return (
list.departure_times === departure_times &&
list.arrival_times === arrival_times
);
});
//? res.json() >>> json 형태로 바꿔서 돌려준다
return res.json(timeList);
}
//! 요청 된 파라미터 departure, destination 값과 동일한 값을 가진 항공편 데이터를 조회합니다.
if (departure && destination) {
let place = flights.filter((list) => {
return list.departure === departure && list.destination === destination;
});
return res.json(place);
}
return res.json(flights);
},
// [GET] /flight/:uuid
// 요청 된 uuid 값과 동일한 uuid 값을 가진 항공편 데이터를 조회합니다.
findById: (req, res) => {
const { uuid } = req.params;
// TODO: flight 와 동일한 방식대로 조회
if (uuid) {
let flightUuid = flights.filter((data) => {
return data.uuid === uuid;
});
return res.json(flightUuid);
}
},
// Advanced
// [PUT] /flight/:uuid 요청을 수행합니다.
// 요청 된 uuid 값과 동일한 uuid 값을 가진 항공편 데이터를 요쳥 된 Body 데이터로 수정합니다.
update: (req, res) => {
const { uuid } = req.params;
const bodyData = req.body;
// TODO:
// 업데이트가 될 인덱스를 변수에 저장합니다
const beUpdatedIdx = flights.findIndex(flight => flight.uuid === uuid)
const updatedFlight = {...flights[beUpdatedIdx], bodyData}
// 기존 배열에 인덱스를 찾아서 바꾸기
// flight.splice(바꿀 인덱스, 몇개 바꿀지?, 뭘로 바꿀지)
flights.splice(beUpdatedIdx,1,updatedFlight)
return res.status(200).json(updatedFlight)
},
};
bookController.js
// POST /book에서 사용할 uuid입니다.
const { v4: uuid } = require("uuid");
// 항공편 예약 데이터를 저장합니다.
let booking = [];
module.exports = {
// [GET] /book 요청을 수행합니다.
// 전체 예약 데이터를 조회합니다.
findAll: (req, res) => {
return res.status(200).json(booking);
},
// [GET] /book/:phone 요청을 수행합니다.
// 요청 된 phone과 동일한 phone 예약 데이터를 조회합니다.
findByPhone: (req, res) => {
const { phone } = req.params;
//TODO:
if (phone) {
let phoneList = booking.filter((list) => {
return list.phone === phone;
});
return res.status(200).json(phoneList);
}
},
// [GET] /book/:phone/:flight_uuid 요청을 수행합니다.
// 요청 된 id, phone과 동일한 uuid, phone 예약 데이터를 조회합니다.
findByPhoneAndFlightId: (req, res) => {
const { phone, flight_uuid } = req.params;
// FIXME:
if (phone && flight_uuid) {
let phoneList = booking.filter((list) => {
return list.phone === phone && list.flight_uuid === flight_uuid;
});
return res.status(200).json(phoneList);
}
},
// [POST] /book 요청을 수행합니다.
// 요청 된 예약 데이터를 저장합니다.
create: (req, res) => {
//! POST /book에서 사용할 booking_uuid입니다.
const booking_uuid = uuid();
const { flight_uuid, name, phone } = req.body;
// 바디로 들어오는 필수 데이터
// 있는지 없는지 체크, 이미 있으면 돌려보낸다
if(booking.find(book => book.phone === phone && book.flight_uuid === flight_uuid )){
return res.status(409).json("It's Already booked.")
}
else{
// 기존 배열에 인덱스를 변수에 저장
//
booking.unshift({booking_uuid, flight_uuid, name, phone});
res.location(`/book/${booking_uuid}`);
return res.status(201).json(booking[0])
}
},
// Optional
// [DELETE] /book/:booking_uuid 요청을 수행합니다.
// 요청 된 id, phone 값과 동일한 예약 데이터를 삭제합니다.
deleteByBookingId: (req, res) => {
const { booking_uuid } = req.params;
// TODO:
booking = booking.filter(book => book.booking_uuid !== booking_uuid)
return res.status(200).json(booking_uuid)
},
};