Skip to content

API ๋ช…์„ธ

minjungkim edited this page Nov 22, 2022 · 22 revisions

API ๋ช…์„ธ

  • json: ์นด๋ฉœ์ผ€์ด์Šค ์‚ฌ์šฉ

๋กœ๊ทธ์ธ API

POST /auth/login

req

  • ๋กœ๊ทธ์ธ ์š”์ฒญ
{
    "userId": "myid",
    "password": "p@ssw0rd"
}

res

  • ๋กœ๊ทธ์ธ ์„ฑ๊ณต
{
    "status": 200,
    "data": {
        "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
        "userId": "abcd1234",
        "id": 3,
    }
}
  • ๋กœ๊ทธ์ธ ์‹คํŒจ
{
    "status": 401,
    "error": {
        "message": "Your login request has failed",
    }
}

๋กœ๊ทธ์•„์›ƒ API

GET /auth/logout

req


res

  • ๋กœ๊ทธ์•„์›ƒ ์„ฑ๊ณต
{
    "status": 200
}
  • ๋กœ๊ทธ์•„์›ƒ ์‹คํŒจ
{
    "status": 404
}

ํšŒ์›๊ฐ€์ž… API

POST /user

req

  • ํšŒ์›๊ฐ€์ž… ์š”์ฒญ
{
    "userId": "userId",
    "password": "randowPW",
    "pace": 390,
    "zipCode": 01234,
}

res

  • ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต์‹œ
{
    "status": 201
}
  • ํšŒ์›๊ฐ€์ž… ์‹คํŒจ์‹œ
{
    "status": 400
}

ID ์ค‘๋ณต ๊ฒ€์‚ฌ API

GET /check/user/:id

req


res

  • ์ค‘๋ณต ๊ฒ€์‚ฌ ์‘๋‹ต
{
    "status": 200,
    "exists": true/false
}

ํ† ํฐ ๊ฐฑ์‹  API

GET /auth/refresh

req

  • ๊ฐฑ์‹  ์š”์ฒญ์‹œ
    • HEADER
      • Authorization: Bearer

res

  • ๊ฐฑ์‹  ์„ฑ๊ณต์‹œ
{
    "status": 201,
    "data": {
        "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
        "userId": "abcd1234",
    }
}
  • ๊ฐฑ์‹  ์‹คํŒจ์‹œ
{
    "status": 401,
    "error": {
        "message": "Invalid refresh token"
    }
}

๋ชจ์ง‘ ๋ชฉ๋ก ์กฐํšŒ/๊ฒ€์ƒ‰/ํ•„ํ„ฐ API

req


res

์ฝ”์Šค ๋ชฉ๋ก ์กฐํšŒ/๊ฒ€์ƒ‰/ํ•„ํ„ฐ API

req


res

๋ชจ์ง‘ ์ƒ์„ธ ํŽ˜์ด์ง€ API

GET /recruit/:id

req


res

{
    title: "๋‹ฌ๋ ค~๋‹ฌ๋ ค~",
    startTime: 2022-11-11-20:20,
    maxPpl: 5,
    currentPpl: 3,
    path: [{lat:123, lng: 123}, ... ],
    pathLength: 33,
    pace: 20,
    hCode: "12345",
    userId: "pushedrumex",
}

์ฝ”์Šค ์ƒ์„ธ ํŽ˜์ด์ง€ API

GET /course/:id

req


res

{
    title: "~~ ์ฝ”์Šค์ž…๋‹ˆ๋‹ค.",
    pathLength: 100,
    hCode: "12345",
    userId: "pushedrumex"
}

๋ชจ์ง‘ ์ฐธ์—ฌ API (์ฐธ์—ฌ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด API)

POST /recruit/join HEADER : Authorization: Bearer

req

{
    "recruitId": "1",
    "userId": "34", // ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„: ์‚ฌ์šฉ์ž id -> DB์—์„œ์˜ id๊ฐ’(PK)
}                

res

  • ์ฐธ๊ฐ€ ์š”์ฒญ ์„ฑ๊ณต์‹œ
{
    "status": 201,
    "success": true/false
}
  • ์ฐธ๊ฐ€ ์š”์ฒญ ์‹คํŒจ์‹œ (์ฐธ๊ฐ€์‹ ์ฒญ์ธ์› ๊ฝ‰์ฐฌ๊ฒฝ์šฐ & ๊ธ€์ด ๊ฐ‘์ž๊ธฐ ์‚ญ์ œ๋œ ๊ฒฝ์šฐ)
{
    "status": 409,
    "error": {
        "message": "Maximum cap reached" / "Deleted post"
    }
}

๋ชจ์ง‘ ๋“ฑ๋ก API

POST /recruit HEADER : Authorization: Bearer

req

{
    "title": "์ œ๋ชฉ์ž…๋‹ˆ๋‹ค",
    "courseId": "40",
    "startTime": "2022-11-15 09:00:00",
    "maxPpl": 3,
    "pace": 365,
    "zipCode": 1234,
    "authorId": "jagijasin"
}

res

  • ๋ชจ์ง‘ ๋“ฑ๋ก ์„ฑ๊ณต์‹œ
{
    "status": 201,
    "data": {
        "recruitId": 210
    }
}
  • ๋ชจ์ง‘ ๋“ฑ๋ก ์‹คํŒจ์‹œ
{
    "status": 500,
    "error": {
        "message": "Internal server error" 
    }
}

์ฝ”์Šค ๋“ฑ๋ก API

POST /course HEADER : content-type multipart/form-data, Authorization: Bearer

req

{
    "title": "์ œ๋ชฉ",
    "path": [{lat: 33, lng: 126},{lat: 33, lng: 126},{lat: 33, lng: 126},{lat: 33, lng: 126}],
    "pathLength": 3800,
    "userId": "abcd1234",
    "img" : "data................."
}

res

  • ์ฝ”์Šค ๋“ฑ๋ก ์š”์ฒญ ์„ฑ๊ณต์‹œ
{
    "status": 201,
    "data": {
        "courseId": 234
    }
}
  • ์ฝ”์Šค ๋“ฑ๋ก ์š”์ฒญ ์‹คํŒจ์‹œ
{
    "status": 500,
    "error": {
        "message": "Internal server error" 
    }
}

๋‚ด ์ •๋ณด ์กฐํšŒ API

GET /user/:userId/profile
Header : Authorization: Bearer

req


res

  • ๋‚ด ์ •๋ณด ์กฐํšŒ ์š”์ฒญ ์„ฑ๊ณต์‹œ
{
    "status": 200,
    "data": {
        "userId": "abcd1234",
        "zipCode": 12354,
        "pace": 380,
    }
}
  • ๋‚ด ์ •๋ณด ์กฐํšŒ ์š”์ฒญ ์‹คํŒจ์‹œ
{
    "status": 500,
    "error": {
        "message": "Internal server error" 
    }
}

์œ ์ € ์ •๋ณด ์ˆ˜์ • API

PATCH /user/:userId/profile Header : Authorization: Bearer

req

{
    "pace"?: 365,
    "zipCode"?: 12367
}

res

  • ๋‚ด ์ •๋ณด ์ˆ˜์ • ์š”์ฒญ ์„ฑ๊ณต์‹œ
{
    "status": 201
}
  • ๋‚ด ์ •๋ณด ์ˆ˜์ • ์š”์ฒญ ์‹คํŒจ์‹œ
{
    "status": 500,
    "error": {
        "message": "Internal server error" 
    }
}

์œ ์ € ์ฐธ์—ฌ ๋ชฉ๋ก API

GET /user/:userId/recruit Header : Authorization: Bearer

req


res

  • ์œ ์ € ์ฐธ์—ฌ ๋ชจ์ง‘๋ชฉ๋ก ์š”์ฒญ ์„ฑ๊ณต์‹œ
{
    "status": 200,
    "data": {
        "recruits": [
            {
                "title": "1๋ฒˆ ๋ชจ์ง‘๊ธ€",
                "recruitId": "1",
                "courseId": "1",
                "startTime": "2022-11-15 09:00:00",
                "maxPpl": 3,
                "pace": 365,
                "zipCode": 12345,
                "authorId": "jagijasin"   
            },
            {
                "title": "2๋ฒˆ ๋ชจ์ง‘๊ธ€",
                "recruitId": "2",
                "courseId": "2",
                "startTime": "2022-11-15 09:00:00",
                "maxPpl": 3,
                "pace": 365,
                "zipCode": 12345,
                "authorId": "jagijasin" 
            }, ...
        ]
    }
}
  • ์œ ์ € ์ฐธ์—ฌ ๋ชจ์ง‘๋ชฉ๋ก ์š”์ฒญ ์‹คํŒจ์‹œ
{
    "status": 500,
    "error": {
        "message": "Internal server error"
    }
}

์œ ์ € ์ฝ”์Šค ๋ชฉ๋ก API

GET /user/:userId/course Header : Authorization: Bearer

req


res

  • ์œ ์ € ์ฝ”์Šค ๋ชฉ๋ก ์š”์ฒญ ์„ฑ๊ณต์‹œ
{
    "status": 200,
    "data": {
        courses: [
            {
                "title": "์ œ๋ชฉ1",
                "courseId": 1,
                "path": [(1, 1), (2, 2), (3, 3)...],
                "pathLength": 3800,
                "userId": "abcd1234",
                "img" : "https://ncp.storage.imglink"
            }, 
            {
                "title": "์ œ๋ชฉ2",
                "courseId": 2,
                "path": [(1, 1), (2, 2), (3, 3)...],
                "pathLength": 3800,
                "userId": "abcd1234",
                "img" : "https://ncp.storage.imglink"
            }, ...
        ]
        
    }
}
  • ์œ ์ € ์ฝ”์Šค ๋ชฉ๋ก ์š”์ฒญ ์‹คํŒจ์‹œ
{
    "status": 500,
    "error": {
        "message": "Internal server error"
    }
}

๐Ÿ  Home

๐ŸŽจ Proposal

๐Ÿ‘จโ€๐Ÿ’ป Manual

๐Ÿง‘โ€โš–๏ธ Rules

๐Ÿงญ Plan

โ˜€๏ธ Meet up

Daily Scrum
Weekly Review
Weekly Plan

๐ŸŽฅ Presentation

โš™๏ธ Sharing Skills

๐Ÿ“‘ Document

๐Ÿ“‘ FrontEnd - Trial and Errors

๐Ÿ“‘ Backend - Trial and Errors

๐Ÿ“‘ DevOps - Trial and Errors

๐Ÿง‘โ€๐Ÿซ Mentoring

Clone this wiki locally