CRUD와 7 Standard Actions

CRUD

CRUD(크러드)는 Create, Read, Update, Delete의 약어입니다.

말 그대로 데이터의 생성, 조회, 수정, 삭제가 가능함을 나타냅니다.
예를 들어,  주소록 프로그램에서 주소가 생성, 조회, 수정, 삭제가 가능하다면 '이 프로그램에서 주소는 CRUD가 가능하다'고 말할 수 있습니다. (다른 예: '이 프로그램에 게시물 CRUD 기능을 넣어주세요' )

7 Standard Actions

위 CRUD를 웹개발에 맞게 좀 더 세분화 시킨 것이 7 Standard Actions입니다. 사실 명칭이 정확하게 정해지지 않아서 Standard Controller Actions, RESTful Actions, Golden Seven Actions 등등으로 다양하게 불리지만 저는 그냥 7 actions라고 부르겠습니다.

자료를 웹사이트에서 생성하기 위해서 웹사이트는 2가지 일을 해야 합니다.
New - 생성폼(form)을 사용자에게 보여주고,
Create - 전달 받은 자료를 실제로 생성하는 과정이 필요합니다.

마찬가지로 자료를 수정하기 위해서 2가지 일을 해야 합니다.
Edit - 수정폼을 사용자에게 보여주고,
Update - 전달 받은 자료를 바탕으로 현재 자료를 수정합니다.

자료를 조회하는 방법에는 두가지가 있습니다.

Index - 자료들의 목록을 조회합니다.
Show - 하나의 자료를 상세히 보여줍니다.

자료를 삭제하는 것은 form이 필요하지 않습니다.

Destroy - 자료를 삭제합니다.

  • new랑 create, edit랑 update는 영단어 뜻은 같지만 언제나 new, edit은 폼을 보여주고, create, update은 실제로 자료를 생성/수정합니다.
  • destroy는 delete이 아니라 destroy입니다.

이 7 actions를 route, http verbs과 연결시키면 아래와 같은 표가 나오게 됩니다.

Action
http verbs
Route
index 
GET/data
show 
GET/data/:id
new 
GET/data/new
create 
POST
/data
edit 
GET
/data/:id/edit
update 
PUT
/data/:id
destroy 
DELETE/data/:id
  • data는 action의 대상을 나타내며 영어 복수형으로 적어줍니다.(예를 들어 전화번호의 new action이라면 route은 phones/new가 됩니다.)
  • :id는 하나의 특정한 data를 나타내주는 key값으로 변화되는 값입니다.

7 actions는 반드시 따라야 하는 것은 아니고 권장사항입니다만, 제 강좌에서는 최대한 위 규칙대로 사이트를 만들도록 하겠습니다.

댓글

권유성 2016.10.19
잘보고 갑니다
I
Ian H 2016.10.20
@권유성,
이해가 잘 되셨는지 모르겠습니다^^; 화이팅!
박정래 2017.01.16
멋집니다..블로그에서 이곳으로 넘어왔어요 ㅎ
코조스 2017.10.23
설명 참 쉽게 해주시네요~^^ 짱입니다.
I
Ian H 2017.10.24
@코조스,
감사합니다. 혹시 궁금한 점이 있으시면 댓글 남겨주세요!
쮸리맨 2017.11.08
Edit과 new 는 어떻게보면 비슷하다고 볼수있는데 왜 verb가 edit은 get이고 new는 post 이죠? 
이게 맞는거아닌가요 ? new - get    create - post   edit - get     update - post 
new와 edit은 폼을보여주는거기때문에 get으로들어가고 실제 보내는 create,pdate는 서버에전송하기 떄문에 post 제가 이해한게 잘못한건가요  ㅜ 
I
Ian H 2017.11.08
@쮸리맨,
맞습니다. 얼마전에 표 스타일을 바꾸면서 오타가 생겼네요ㅠㅠ 알려주셔서 감사합니다!
J
Jongyo Park 2017.11.09
천천히 차근차근 보면서 하니깐 잘 되어가고 있습니다. 감사합니다.
I
Ian H 2017.11.13
@Jongyo Park,
잘 된다니 다행입니다. 질문있으시면 남겨주세요^^
뿡뽕뽕 2018.02.02
너무 잘보고있어요 !! 감사합니다  책 출판하셔도 될듯.!!
I
Ian H 2018.02.02
@뿡뽕뽕,
감사합니다^^
-
- 2019.01.09
이전 게시물에 댓글이 달리지 않아서 여기 남깁니다ㅠㅠㅠ DB ERROR가 다음과 같이 뜨는데 찾아보니 비밀번호 오류일거 같은데 어느 아이디와 비밀번호를 적는건가요? mLab에 로그인하는 아이디와 db유저의 아이디 모두해봤는데 안되네요ㅠㅠㅠ $ nodemon [nodemon] 1.18.9 [nodemon] to restart at any time, enter `rs` [nodemon] watching: *.* [nodemon] starting `node index.js` server on! http://localhost:3000 DB ERROR :  { MongoError: Authentication failed.     at C:\workspace\contact-book\node_modules\mongodb-core\lib\connection\pool.js:581:63     at authenticateStragglers (C:\workspace\contact-book\node_modules\mongodb-core\lib\connection\pool.js:504:16)     at Connection.messageHandler (C:\workspace\contact-book\node_modules\mongodb-core\lib\connection\pool.js:540:5)     at emitMessageHandler (C:\workspace\contact-book\node_modules\mongodb-core\lib\connection\connection.js:310:10)     at Socket.<anonymous> (C:\workspace\contact-book\node_modules\mongodb-core\lib\connection\connection.js:453:17)     at Socket.emit (events.js:182:13)     at addChunk (_stream_readable.js:283:12)     at readableAddChunk (_stream_readable.js:264:11)     at Socket.Readable.push (_stream_readable.js:219:10)     at TCP.onStreamRead (internal/stream_base_commons.js:94:17)   ok: 0,   errmsg: 'Authentication failed.',   code: 18,   codeName: 'AuthenticationFailed',   operationTime:    Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1547007883 },   '$clusterTime':    { clusterTime:       Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1547007883 },      signature: { hash: [Binary], keyId: [Long] } },   name: 'MongoError',   [Symbol(mongoErrorContextSymbol)]: {} }
I
Ian H 2019.01.09
@-,
1. https://www.mongodb.com/download-center/community 에서 mongodb server 다운로드 및 설치 2. cmd 실행 3. 몽고DB설치위치\bin 폴더로 이동 (예: C:\Program Files\MongoDB\Server\4.0\bin) 4. mongo <db주소> -u <dbuser> -p <dbpassword> 입력 (예: mongo ds12345.mlab.com:12345/mydbname -u mydbuser -p mydbpassword)
하셔서 접속 되는지 확인해 보세요. 이 때 사용한 username과 password 사용하시면 됩니다.
댓글쓰기

이 글에 댓글을 다시려면 SNS 계정으로 로그인하세요. 자세히 알아보기

UP