클라이언트 -> 서버로 리소스에 대한 정보를 요청하기 위해 사용되는 메서드
데이터를 읽거나, 검색할 때 사용되는 메서드라고 할수있다.
GET요청은 body가 없기때문에 쿼리문(?,&)으로 데이터를 전송한다.
리소스를 생성/업데이트하기 위해 클라이언트가 서버에 데이터(body)를 보내는데 사용한다.
GET과 달리 데이터를 HTTP메세지 Body에 담아서 전송한다(get은 쿼리문).
그리고 해당 Body의 데이터 타입은 요청 헤더의 Content-Type에 따라 결정된다.
HTTP 메세지 Body에는 데이터의 길이제한 없이 데이터를 전송할수 있다.
=> GET은 길이제한이 있으므로 대용량의 데이터는 POST 메서드로 전송.
POST는 데이터가 http message body로 전송되고, 내용이 직접 눈으로 보이지는 않지만. 개발자 도구나 툴로 요청 내용을 볼수있기때문에.
마찬가지로 민감한 정보는 암호화해서 전송해야한다.
리소스를 Update한다는건 수정/삭제가 가능하다는 거다. 그래서 POST 메서드로 할수는 있지만 더 용도에 맞는 메서드인 PUT/PATCH (수정) DELETE (삭제)를 사용하는것이 좋을듯 하다.
리소스의 media type을 나타내기 위해 사용됨.
POST요청은 데이터를 body에 담는다 했고 body에 데이터타입은 기술된 content-type에 따라 정해진다고 했다.
Express에 내장된 '미들웨어' 기능.
urlencoded payload로 들어오는 요청을 분석한다.
이해하기론. request중 content-type의 헤더가 위의 것인것만 파싱해서 컨트롤러의 req인자에 넣어준다는것 같다.
그리고 내장된 '미들웨어'다 그리고 content-type의 헤더가 특정한 요청을 분석해야하니까 모든요청에대해 거치는 미들웨어여야 하니까 app.use()로 글로벌로 써야할거다.
app.use(espress.urlencoded({extended:true}))
위와 비슷하지만 JSON형태의 데이터를 파싱해준다.
//with pug
form(method="post")
input(name="title",required,value=value)
input(value="save",type="submit")
// 확인 => req.body.title
form태그에 생각보다 많은 속성들이 있다.
https://3-stack.tistory.com/60
https://sjh836.tistory.com/154
https://kirkim.github.io/javascript/2021/10/16/body_parser.html