Skip to content

RESTful API

Skile edited this page May 18, 2019 · 5 revisions

Create User

  • Request: POST /users/

    • Headers
    • URL Params
    • Data Params
      • username : 필수.
      • password : 필수.
      • default_nickname
      • default_account
  • Response:

    • Success

      • Code: 201 Created
      • Content:
      {
        "id": 1,
        "username": "Username",
        "default_nickname": "",
        "default_account": ""
      }
    • Error

      • Code: 400 Bad Request
      • Content:
      { "<field_name>" : ["<error_message>"] }

Get User Auth Token

  • Request: POST /token/

    • Headers
    • URL Params
    • Data Params
      • username : 필수.
      • password : 필수.
  • Response:

    • Success

      • Code: 200 OK
      • Content:
      {
        "token": "[TOKEN]"
      }
    • Error

      • Code: 400 Bad Request
      • Content:
      {
        "non_field_errors": [
          "Unable to log in with provided credentials."
        ]
      }

Get User Info

  • Request: GET /users/:username/

    • Headers
      • Authorization : Token [AUTH_TOKEN]
    • URL Params
      • username : 필수.
    • Data Params
  • Response:

    • Success

      • Code: 200 OK
      • Content:
      {
        "id": 1,
        "username": "Username",
        "default_nickname": "",
        "default_account": ""
      }
    • Error

      • Code: 401 Unauthorized
      • Content:
      {
        "detail": "Authentication credentials were not provided."
      }

      OR

      • Code: 401 Unauthorized
      • Content:
      {
        "detail": "Invalid token."
      }

      OR

      • Code: 403 Forbidden
      • Content:
      {
        "detail": "You do not have permission to perform this action."
      }

Modify User Info

  • Request: PUT /users/:username/

    • Headers
      • Authorization : Token [AUTH_TOKEN]
    • URL Params
      • username : 필수.
    • Data Params
      • password
      • default_name
      • default_account
  • Response:

    • Success

      • Code: 200 OK
      • Content:
      {
        "id": 1,
        "username": "Username",
        "default_nickname": "",
        "default_account": ""
      }
    • Error

      • Code: 400 Bad Request
      • Content:
      { "<field_name>" : ["<error_message>"] }

      OR

      • Code: 401 Unauthorized / 403 Forbidden

Create Room

Room 모델을 생성하고 나서, 기본 Layer 생성 및 Member(owner) 생성이 자동으로 수행된다.

  • Request: POST /users/:username/rooms/

    • Headers
      • Authorization : Token [AUTH_TOKEN]
    • URL Params
      • username : 필수.
    • Data Params
      • name : 필수.
  • Response:

    • Success

      • Code: 201 Created
      • Content:
      {
        "id": 1,
        "name": "Room Name",
        "url": "[SOME_RANDOM_UNIQUE_STRING]",
        "owner": "Username"
      }
    • Error

      • Code: 400 Bad Request
      • Content:
      { "<field_name>" : ["<error_message>"] }

      OR

      • Code: 401 Unauthorized / 403 Forbidden

Get Room List by User

  • Request: GET /users/:username/rooms/

    • Headers
      • Authorization : Token [AUTH_TOKEN]
    • URL Params
      • username : 필수.
    • Data Params
  • Response:

    • Success

      • Code: 200 OK
      • Content:
      [
        {
          "id": 1,
          "name": "Room Name",
          "url": "[SOME_RANDOM_UNIQUE_STRING]",
          "owner": "Username"
        },
        ...
      ]
    • Error

      • Code: 401 Unauthorized / 403 Forbidden

Get Room by URL

  • Request: GET /rooms/:url/

    • Headers
    • URL Params
      • url : 필수.
    • Data Params
  • Response:

    • Success

      • Code: 200 OK
      • Content:
      {
        "id": 1,
        "name": "Room Name",
        "url": "[SOME_RANDOM_UNIQUE_STRING]",
        "owner": "Username"
      }
    • Error

      • Code: 404 Not Found

Remove Room

  • Request: DELETE /rooms/:url/

    • Headers
      • Authorization : Token [AUTH_TOKEN]
    • URL Params
      • url : 필수.
    • Data Params
  • Response:

    • Success

      • Code: 204 No Content
    • Error

      • Code: 401 Unauthorized / 403 Forbidden

Create Member

  • Request: POST /rooms/:url/members/

    • Headers
    • URL Params
      • url : 필수.
    • Data Params
      • user
      • nickname : 필수.
      • account
  • Response:

    • Success

      • Code: 201 Created
      • Content:
      {
        "id": 1,
        "nickname": "Username",
        "account": "",
        "room": "room_url",
        "user": null
      }
    • Error

      • Code: 400 Bad Request
      • Content:
      { "nickname" : ["중복된 별명입니다."] }

      OR

      • Code: 400 Bad Request
      • Content:
      { "user" : ["이미 해당 방에 속해있는 사용자입니다."] }

Get Member List by Room

  • Request: GET /rooms/:url/members/

    • Headers
    • URL Params
      • url : 필수.
    • Data Params
  • Response:

    • Success

      • Code: 200 OK
      • Content:
      [
        {
          "id": 1,
          "nickname": "Username",
          "account": "",
          "room": "room_url",
          "user": null
        },
        ...
      ]
    • Error

      • Code: 404 Not Found

Modify Member

  • Request: PUT /rooms/:url/members/:member_pk/

    • Headers
    • URL Params
      • url : 필수.
      • member_pk : 필수. nickname이 아닌 정수 id(pk)임에 유의.
    • Data Params
      • nickname
      • account
      • user
  • Response:

    • Success

      • Code: 200 OK
      • Content:
      {
        "id": 1,
        "nickname": "Username",
        "account": "",
        "room": "room_url",
        "user": null
      }
    • Error

      • Code: 400 Bad Request
      • Content:
      {
        "user" : [
          "이미 해당 방에 속해있는 사용자입니다.",
          "다른 사용자가 이미 연동된 멤버입니다.",
          "중복된 닉네임입니다."
        ]
      }

Delete Member

  • Request: DELETE /rooms/:url/members/:member_pk/

    • Headers
    • URL Params
      • url : 필수.
      • member_pk : 필수. nickname이 아닌 정수 id(pk)임에 유의.
    • Data Params
  • Response:

    • Success

      • Code: 204 No Content
    • Error

      • Code: 400 Bad Request
      • Content:
      {
        "non_field_errors" : [
          "방장은 삭제할 수 없습니다."
        ]
      }