nodejs
>> λ°λ‘ κ°κΈ° <<
κΈ°μ μ μ±μ©κ³΅κ³ κ΄λ¦¬ λ° μ¬μ©μμ κ³΅κ³ μ‘°ν, μ μ¬μ§μ API μλΉμ€μ λλ€.
μ½λ κ°λ
μ±μ μν΄ ν΄λ ꡬ쑰λ μ€μ λ°μ΄ν°λ² μ΄μ€ μ 보λ₯Ό λ΄μ config
μ ν¨κ», 3κ³μΈ΅μΌλ‘ λΆν΄νμμ΅λλ€.
wanted_pre_onboarding
βββconfig
βββ models ------------- λ°μ΄ν° κ΄λ ¨ μ½λ
βββ routes ------------- Routing κ΄λ ¨ μ½λ
βββ services ----------- μλΉμ€ κ΄λ ¨ μ½λ
κ° λͺ¨λΈκ°μ κ΄κ³λ μ μ¬μ§κ³Ό κ°μ΅λλ€.
ν μ±μ©κ³΅κ³ (Recruits)λ μ¬λ¬ λͺ
μ μ
μ¬μ§μν μ¬μ©μ(Users)λ₯Ό κ°μ§ μ μκ³ , ν νμ¬(Companys)λ μ¬λ¬ κ°μ μ±μ©κ³΅κ³ (Recruits)λ₯Ό μ¬λ¦΄ μ μκ² μ€μ νμμ΅λλ€.
Express.js
PostgreSQL
(RDBMS)sequelize
(ORM)
POST
localhost:3001/recruit/new
{
"company_id":1,
"position":"λ°±μλ κ°λ°μ",
"reward": 3000,
"skill":"python",
"content":"ν¨κ» μ±μ₯ν΄λκ° νμ΄μ¬ λ°±μλ κ°λ°μλ₯Ό ꡬνκ³ μμ΅λλ€!"
}
{
"newRecruit": {
"recruit_id": 1,
"company_id": 1,
"position": "λ°±μλ κ°λ°μ",
"reward": 3000,
"skill": "python",
"content": "ν¨κ» μ±μ₯ν΄λκ° νμ΄μ¬ λ°±μλ κ°λ°μλ₯Ό ꡬνκ³ μμ΅λλ€!"
}
}
POST
localhost:3001/recruit/modify
{
"recruit_id":1,
"position":"νλ‘ νΈμλ κ°λ°μ",
"reward": 3000,
"skill":"python",
"content":"ν¨κ» μ±μ₯ν΄λκ° νμ΄μ¬ νλ‘ νΈμλ κ°λ°μλ₯Ό ꡬνκ³ μμ΅λλ€!"
}
π― company_id
λ μμ λΆκ°λ₯
{
"change": {
"recruit_id": 1,
"position": "νλ‘ νΈμλ κ°λ°μ",
"reward": 3000,
"skill": "python",
"content": "ν¨κ» μ±μ₯ν΄λκ° νμ΄μ¬ νλ‘ νΈμλ κ°λ°μλ₯Ό ꡬνκ³ μμ΅λλ€!",
"company_id": 1
}
}
π― λ§μ½ μ‘΄μ¬νμ§ μλ μ±μ©κ³΅κ³ idλ₯Ό μ λ ₯νλ€λ©΄???
{
"message": "μ±μ©κ³΅κ³ μ 보λ₯Ό νμΈν΄ μ£ΌμΈμ"
}
POST
localhost:3001/recruit/delelte
{
"recruit_id":1
}
{
"message": "deleted 1 "
}
π― λ§μ½ μ‘΄μ¬νμ§ μλ μ±μ©κ³΅κ³ idλ₯Ό μ λ ₯νλ€λ©΄???
{
"message": "μ±μ©κ³΅κ³ μ 보λ₯Ό νμΈν΄ μ£ΌμΈμ"
}
GET
localhost:3001/apply/all
none
{
"allRecruit": [
{
"recruit_id": 1,
"position": "λ°±μλ κ°λ°μ",
"reward": 3000,
"skill": "python",
"company_id": 1,
"company_name": "μν°λ",
"country": "λνλ―Όκ΅",
"city": "κ°λ¨κ΅¬"
},
{
"recruit_id": 2,
"position": "λ°±μλ κ°λ°μ",
"reward": 3000,
"skill": "nodejs",
"company_id": 2,
"company_name": "λ²ν°μν",
"country": "ν¬λΌμ΄",
"city": "κ·μ‘±λ"
}
]
}
π― νμ¬ μ 보κΉμ§ ν¨κ» νμΆ, μ±μ©κ³΅κ³ μμΈλ 보μ΄μ§ μμ΅λλ€.
GET
localhost:3001/apply/:id/detail
id : 2 ----> recruit_id
{
"theRecruit": {
"recruit_id": 2,
"position": "νλ‘ νΈμλ κ°λ°μ",
"reward": 3000,
"skill": "html",
"content": "ν¨κ» μ±μ₯ν΄λκ° νλ‘ νΈμλ κ°λ°μλ₯Ό ꡬνκ³ μμ΅λλ€!",
"company_id": 2,
"company_name": "μν°λ",
"country": "λνλ―Όκ΅",
"city": "κ°λ¨κ΅¬",
"another_recruit": [
1,
2,
3
]
}
}
π― μ νν μ±μ©κ³΅κ³ μ μμΈ λ΄μ©κ³Ό, λμΌ νμ¬μ μ±μ©κ³΅κ³ id ν¨κ» μΆλ ₯
π― λ§μ½ μ‘΄μ¬νμ§ μλ μ±μ©κ³΅κ³ idλ₯Ό μ λ ₯νλ€λ©΄???
{
"message": "μ±μ©κ³΅κ³ μ 보λ₯Ό νμΈν΄μ£ΌμΈμ"
}
POST
localhost:3001/apply/:id/gogo
[PARAMS]
id : 1 ----> recruit_id
[body]
{
"user_id" : 1
}
{
"message": "λΉμ μ λμ μ μμν©λλ€."
}
π― λ§μ½ κ°μ μ¬μ©μκ° μ μ¬μ§μμ λ νλ€λ©΄???
{
"message": "μ
μ¬ μ§μμ νλ²λ§ κ°λ₯ν©λλ€."
}
π― λ§μ½ μ‘΄μ¬νμ§ μλ μ±μ©κ³΅κ³ idλ₯Ό μ λ ₯νλ€λ©΄???
{
"message": "μ±μ©κ³΅κ³ μ 보λ₯Ό νμΈν΄ μ£ΌμΈμ"
}
π― λ§μ½ μ‘΄μ¬νμ§ μλ μ¬μ©μ idλ₯Ό μ λ ₯νλ€λ©΄???
{
"message": "μ¬μ©μ μ 보λ₯Ό νμΈν΄μ£ΌμΈμ"
}
npm init
npm start
config/dev.env νμΌ μμ±
POSTGRESQL_PASSWORD= (your password)
μ¬μ©ν ν¨ν€μ§λ νμ κ°μ΅λλ€.
ν¨ν€μ§ μ΄λ¦ | λ²μ | μ€λͺ |
---|---|---|
dotenv | ^16.0.1 | env νμΌ μ°κ²°μ μν΄ μ¬μ© |
express | ^4.18.1 | expressλ‘ μλ²λ₯Ό μ μνκΈ° μν΄ μ¬μ© |
morgan | ^1.10.0 | loggerμ€μ μ μν΄ μ¬μ© |
pg | ^8.7.3 | postgres λͺ¨λ |
postgres | ^3.2.4 | postgres λͺ¨λ |
sequelize | ^6.21.3 | postgreSQLμ λ§λ€κ³ , μ μ΄νκΈ° μν ORM ν¨ν€μ§ |
nodemon | ^2.0.19 | κ°λ°μ μλ²κ° κ³μ κ°λν μ μκ² νκΈ° μν΄ μ¬μ© |