WIL express
webGDSC 웹 express
Express를 이용해 에브리타임 Backend를 구현하는 중입니다…
응답
응답 오브젝트에 대한 메소드(res)는 응답을 클라이언트로 전송하고 요청-응답 주기를 종료한다.
- res.send(): 문자열로 응답한다.
- res.json(): Json 객체로 응답한다.
- res.render(): 보기 템플리트를 렌더링합니다.
HTTP Request Method
- GET : 특정 리소스의 표시를 요청한다.오직 데이터를 받기만 한다.
- POST : 특정 리소스에 엔티티를 제출할 때 사용한다.
- PUT : 목적 리소스 모든 현재 표시를 요청 payload로 바꾼다.
- DELETE : 특정 리소스를 삭제한다.
- PATCH : 리소스의 부분 수정시 사용한다.
이러한 HTTP메소드를 이용하여 서버와 통신하는것을 RESTful이라고 하며,
Create-POST
Retrieve-GET
Update-PUT
Delete-DELETE
를 사용한다.
request객체는 api컨트롤 위한 메소드 세개를 담고있다.
- req.body
XML,JSON,MultiForm등의 데이터를 담는다. - req.param
주소에 포함된 변수를 담는다 (ex:https://gdsc.com/api/post/2) - req.query
주소 이후에 포함된 변수를 담는다(ex:https://gdsc.com/api/post?id=1&key=web)
Querying
Attributes
일부 특성만을 select하려면 attributes 옵션을 사용한다. 중첩배열도 가능하다.
Model.findAll({
attributes: ["foo", ["bar", "baz"], "qux"],
});
SELECT foo, bar AS baz, qux FROM ...
집계(aggregations)는 sequelize.fn()함수를 이용한다.
attributes: [[sequelize.fn("COUNT", sequelize.col("hats")), "no_hats"]];
// SELECT COUNT(hats) AS no_hats
Operator
const Op = Sequelize.Op
[Op.and]: [{a: 5}, {b: 6}] // (a = 5) AND (b = 6)
[Op.or]: [{a: 5}, {a: 6}] // (a = 5 OR a = 6)
[Op.gt]: 6, // > 6
[Op.gte]: 6, // >= 6
[Op.lt]: 10, // < 10
[Op.lte]: 10, // <= 10
[Op.ne]: 20, // != 20
[Op.eq]: 3, // = 3
[Op.is]: null // IS NULL
[Op.not]: true, // IS NOT TRUE
[Op.between]: [6, 10], // BETWEEN 6 AND 10
[Op.notBetween]: [11, 15], // NOT BETWEEN 11 AND 15
[Op.in]: [1, 2], // IN [1, 2]
[Op.notIn]: [1, 2], // NOT IN [1, 2]
[Op.like]: '%hat', // LIKE '%hat'
sequelize 메소드
몰랐는데 다 정해져 있다는 것을 알게되었다…문서를 제대로 읽자…
https://sequelize.org/master/manual/model-querying-finders.html
어쩔 때 사용하는지 예시가 있다.
- create a new Tutorial: create(object)
- find a Tutorial by id: findByPk(id)
- get all Tutorials: findAll()
- update a Tutorial by id: update(data, where: { id: id })
- remove a Tutorial: destroy(where: { id: id })
- remove all Tutorials: destroy(where: {})
- find all Tutorials by title: findAll({ where: { title: … } })