소개

Spring boot JPA Notice API

Common

Response Code

Code Message

40100

OK

40400

Invalid Input Value

40401

Entity Not Found

40402

Type Mismatch

40501

authentication failed

40502

jwt verify failed

40503

forbidden

40601

email duplicated

40999

Internal Server Error

User (A)

AccessToken 발급 (A00)

Request

Request HTTP Example:

POST /login HTTP/1.1
Accept: application/json
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded

email=user01%40gmail.com&password=1234

Request Parameters :

Parameter Required Description Validation

email

true

이메일

NotBlank

password

true

패스워드

NotBlank

CURL :

$ curl 'http://localhost:8080/login' -i -X POST \
    -H 'Accept: application/json' \
    -d 'email=user01%40gmail.com&password=1234'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 349

{
  "timestamp" : "2021-10-14 19:07:09",
  "code" : "40100",
  "result" : "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MjksInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMjksImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.OTObmSea3CctVTwTVIIDomeVGjYeINSCaXaCryRn39d5rscRrr3Y2_1_t8FEumcpFpP33dh4k_QmrUb_9FZnlg"
}

Response Fields:

Path Type Description

timestamp

String

응답시간

code

String

응답코드

result

String

Access Token (JWT)

유저 등록 (A01)

Request

Request HTTP Example:

POST /users HTTP/1.1
Content-Type: application/json;charset=UTF-8
Accept: application/json
Content-Length: 96
Host: localhost:8080

{
  "email" : "sample01@gmail.com",
  "password" : "sample-password",
  "name" : "sample-name"
}

Header :

Name Required Description

Content-Type

true

application/json

Request Fields :

Path Type Required Description Validation

email

String

true

이메일

NotBlank

password

String

true

패스워드

NotBlank

name

String

true

이름

NotBlank

CURL :

$ curl 'http://localhost:8080/users' -i -X POST \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H 'Accept: application/json' \
    -d '{
  "email" : "sample01@gmail.com",
  "password" : "sample-password",
  "name" : "sample-name"
}'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 259

{
  "timestamp" : "2021-10-14 19:07:09",
  "code" : "40100",
  "result" : {
    "id" : "user-acbbfa30d1f44995a9130a1e2996f05c",
    "email" : "sample01@gmail.com",
    "name" : "sample-name",
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }
}

Response Fields:

Path Type Description

timestamp

String

응답시간

code

String

응답코드

result.id

String

유저 ID

result.email

String

이메일

result.name

String

이름

result.createdBy

String

등록자

result.createdDt

String

등록일 yyyy-MM-dd HH:mm:ss

유저 수정 (A02)

Request

Request HTTP Example:

PUT /users/user-01 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MjksInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMjksImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.OTObmSea3CctVTwTVIIDomeVGjYeINSCaXaCryRn39d5rscRrr3Y2_1_t8FEumcpFpP33dh4k_QmrUb_9FZnlg
Accept: application/json
Content-Length: 96
Host: localhost:8080

{
  "email" : "update01@gmail.com",
  "password" : "update-password",
  "name" : "update-name"
}

Header :

Name Required Description

Content-Type

true

application/json

Authorization

true

Access Token (JWT)

Path Parameters : ./users/{userId}

Parameter Required Description

userId

true

유저 ID

Request Fields :

Path Type Required Description Validation

email

String

true

이메일

NotBlank

password

String

true

패스워드

NotBlank

name

String

true

이름

NotBlank

CURL :

$ curl 'http://localhost:8080/users/user-01' -i -X PUT \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MjksInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMjksImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.OTObmSea3CctVTwTVIIDomeVGjYeINSCaXaCryRn39d5rscRrr3Y2_1_t8FEumcpFpP33dh4k_QmrUb_9FZnlg' \
    -H 'Accept: application/json' \
    -d '{
  "email" : "update01@gmail.com",
  "password" : "update-password",
  "name" : "update-name"
}'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 235

{
  "timestamp" : "2021-10-14 19:07:09",
  "code" : "40100",
  "result" : {
    "id" : "user-01",
    "email" : "update01@gmail.com",
    "name" : "update-name",
    "createdBy" : "system",
    "createdDt" : "2020-11-11 00:00:11"
  }
}

Response Fields:

Path Type Description

timestamp

String

응답시간

code

String

응답코드

result.id

String

유저 ID

result.email

String

이메일

result.name

String

이름

result.createdBy

String

등록자

result.createdDt

String

등록일 yyyy-MM-dd HH:mm:ss

유저 삭제 (A03)

Request

Request HTTP Example:

DELETE /users/user-71d73085c3264233a342c0e5bef6a4cb HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MjksInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMjksImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.OTObmSea3CctVTwTVIIDomeVGjYeINSCaXaCryRn39d5rscRrr3Y2_1_t8FEumcpFpP33dh4k_QmrUb_9FZnlg
Accept: application/json
Host: localhost:8080

Header :

Name Required Description

Content-Type

true

application/json

Authorization

true

Access Token (JWT)

Path Parameters : ./users/{userId}

Parameter Required Description

userId

true

유저 ID

CURL :

$ curl 'http://localhost:8080/users/user-71d73085c3264233a342c0e5bef6a4cb' -i -X DELETE \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MjksInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMjksImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.OTObmSea3CctVTwTVIIDomeVGjYeINSCaXaCryRn39d5rscRrr3Y2_1_t8FEumcpFpP33dh4k_QmrUb_9FZnlg' \
    -H 'Accept: application/json'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 61

{
  "timestamp" : "2021-10-14 19:07:09",
  "code" : "40100"
}

Response Fields:

Path Type Description

timestamp

String

응답시간

code

String

응답코드

Notice (B)

공지사항 등록(B01)

Request

Request HTTP Example:

POST /notices HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA
Accept: application/json
Host: localhost:8080

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=title

Test Title
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=content

Test Content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=multipartFiles; filename=File_1.txt
Content-Type: text/plain

File 1
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=multipartFiles; filename=File_2.txt
Content-Type: text/plain

File 2
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=multipartFiles; filename=File_3.txt
Content-Type: text/plain

File 3
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Header :

Name Required Description

Content-Type

true

multipart/form-data

Authorization

true

Access Token (JWT)

Request Parameters :

Parameter Required Description Validation

title

true

제목

NotBlank

content

true

내용

NotBlank

Part Required Description

multipartFiles

업로드파일[]

CURL :

$ curl 'http://localhost:8080/notices' -i -X POST \
    -H 'Content-Type: multipart/form-data;charset=UTF-8' \
    -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA' \
    -H 'Accept: application/json' \
    -F 'multipartFiles=@File_1.txt;type=text/plain' \
    -F 'multipartFiles=@File_2.txt;type=text/plain' \
    -F 'multipartFiles=@File_3.txt;type=text/plain' \
    -F 'title=Test Title' \
    -F 'content=Test Content'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1387

{
  "timestamp" : "2021-10-14 19:07:10",
  "code" : "40100",
  "result" : {
    "id" : "notice-8e5c6702364449eba486715d2599814e",
    "title" : "Test Title",
    "content" : "Test Content",
    "readCnt" : 0,
    "fileCnt" : 3,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:10",
    "files" : [ {
      "id" : "att-4df36a39e74444579673c9186d1000db",
      "fileNm" : "File_1.txt",
      "contentType" : "text/plain",
      "downloadCnt" : 0,
      "fileUrl" : "http://localhost:8080/notice/notice-8e5c6702364449eba486715d2599814e/attachment/att-4df36a39e74444579673c9186d1000db",
      "createdBy" : "",
      "createdDt" : "2021-10-14 19:07:10"
    }, {
      "id" : "att-9da76f0b349643418527bac8b77d1550",
      "fileNm" : "File_2.txt",
      "contentType" : "text/plain",
      "downloadCnt" : 0,
      "fileUrl" : "http://localhost:8080/notice/notice-8e5c6702364449eba486715d2599814e/attachment/att-9da76f0b349643418527bac8b77d1550",
      "createdBy" : "",
      "createdDt" : "2021-10-14 19:07:10"
    }, {
      "id" : "att-ed486fcfcdb742d1ada198d54784d238",
      "fileNm" : "File_3.txt",
      "contentType" : "text/plain",
      "downloadCnt" : 0,
      "fileUrl" : "http://localhost:8080/notice/notice-8e5c6702364449eba486715d2599814e/attachment/att-ed486fcfcdb742d1ada198d54784d238",
      "createdBy" : "",
      "createdDt" : "2021-10-14 19:07:10"
    } ]
  }
}

Response Fields:

Path Type Description

timestamp

String

응답시간

code

String

응답코드

result.id

String

공지사항 ID

result.title

String

제목

result.content

String

내용

result.fileCnt

Number

파일수

result.readCnt

Number

조회수

result.createdBy

String

등록자

result.createdDt

String

등록일 yyyy-MM-dd HH:mm:ss

result.files[].id

String

파일 ID

result.files[].fileNm

String

파일명

result.files[].contentType

String

Content Type

result.files[].downloadCnt

Number

다운로드수

result.files[].fileUrl

String

파일Url

result.files[].createdBy

String

등록자

result.files[].createdDt

String

등록일 yyyy-MM-dd HH:mm:ss

공지사항 수정(B02)

Request

Request HTTP Example:

POST /notices/notice-01 HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA
Accept: application/json
Host: localhost:8080

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=title

Update Title
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=content

Update Content
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=multipartFiles; filename=SAMPLE.txt
Content-Type: text/plain

SAMPLE
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

Header :

Name Required Description

Content-Type

true

multipart/form-data

Authorization

true

Access Token (JWT)

Path Parameters : ./notices/{noticeId}

Parameter Required Description

noticeId

true

공지사항 ID

Request Parameters :

Parameter Required Description Validation

title

true

제목

NotBlank

content

true

내용

NotBlank

Part Required Description

multipartFiles

업로드파일[]

CURL :

$ curl 'http://localhost:8080/notices/notice-01' -i -X POST \
    -H 'Content-Type: multipart/form-data;charset=UTF-8' \
    -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA' \
    -H 'Accept: application/json' \
    -F 'multipartFiles=@SAMPLE.txt;type=text/plain' \
    -F 'title=Update Title' \
    -F 'content=Update Content'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1157

{
  "timestamp" : "2021-10-14 19:07:10",
  "code" : "40100",
  "result" : {
    "id" : "notice-01",
    "title" : "Update Title",
    "content" : "Update Content",
    "readCnt" : 0,
    "fileCnt" : 3,
    "createdBy" : "user-01",
    "createdDt" : "2020-11-11 00:00:11",
    "files" : [ {
      "id" : "att-01",
      "fileNm" : "Sample File1",
      "contentType" : "text/plain",
      "downloadCnt" : 0,
      "fileUrl" : "http://localhost:8080/notice/notice-01/attachment/att-01",
      "createdBy" : "user-01",
      "createdDt" : "2020-11-11 00:00:11"
    }, {
      "id" : "att-02",
      "fileNm" : "Sample File2",
      "contentType" : "text/plain",
      "downloadCnt" : 0,
      "fileUrl" : "http://localhost:8080/notice/notice-01/attachment/att-02",
      "createdBy" : "user-01",
      "createdDt" : "2020-11-11 00:00:11"
    }, {
      "id" : "att-8187eae23e934a28bcc81ae03fa649b4",
      "fileNm" : "SAMPLE.txt",
      "contentType" : "text/plain",
      "downloadCnt" : 0,
      "fileUrl" : "http://localhost:8080/notice/notice-01/attachment/att-8187eae23e934a28bcc81ae03fa649b4",
      "createdBy" : "",
      "createdDt" : ""
    } ]
  }
}

Response Fields:

Path Type Description

timestamp

String

응답시간

code

String

응답코드

result.id

String

공지사항 ID

result.title

String

제목

result.content

String

내용

result.fileCnt

Number

파일수

result.readCnt

Number

조회수

result.createdBy

String

등록자

result.createdDt

String

등록일 yyyy-MM-dd HH:mm:ss

result.files[].id

String

파일 ID

result.files[].fileNm

String

파일명

result.files[].contentType

String

Content Type

result.files[].downloadCnt

Number

다운로드수

result.files[].fileUrl

String

파일Url

result.files[].createdBy

String

등록자

result.files[].createdDt

String

등록일 yyyy-MM-dd HH:mm:ss

공지사항 상세 조회(B03)

Request

Request HTTP Example:

GET /notices/notice-60aa68ddcb354728b31491cebbb73593 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA
Accept: application/json
Host: localhost:8080

Header :

Name Required Description

Content-Type

true

application/json

Authorization

true

Access Token (JWT)

Path Parameters : ./notices/{noticeId}

Parameter Required Description

noticeId

true

공지사항 ID

CURL :

$ curl 'http://localhost:8080/notices/notice-60aa68ddcb354728b31491cebbb73593' -i -X GET \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA' \
    -H 'Accept: application/json'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 1027

{
  "timestamp" : "2021-10-14 19:07:10",
  "code" : "40100",
  "result" : {
    "id" : "notice-60aa68ddcb354728b31491cebbb73593",
    "title" : "New Title",
    "content" : "New Content",
    "readCnt" : 1,
    "fileCnt" : 2,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:10",
    "files" : [ {
      "id" : "att-40af257802844858b6b1fb6b83c45eaf",
      "fileNm" : "File_1.txt",
      "contentType" : "text/plain",
      "downloadCnt" : 0,
      "fileUrl" : "http://localhost:8080/notice/notice-60aa68ddcb354728b31491cebbb73593/attachment/att-40af257802844858b6b1fb6b83c45eaf",
      "createdBy" : "",
      "createdDt" : "2021-10-14 19:07:10"
    }, {
      "id" : "att-6c172fd91be84b3db52bf1d16ebec9b8",
      "fileNm" : "File_2.txt",
      "contentType" : "text/plain",
      "downloadCnt" : 0,
      "fileUrl" : "http://localhost:8080/notice/notice-60aa68ddcb354728b31491cebbb73593/attachment/att-6c172fd91be84b3db52bf1d16ebec9b8",
      "createdBy" : "",
      "createdDt" : "2021-10-14 19:07:10"
    } ]
  }
}

Response Fields:

Path Type Description

timestamp

String

응답시간

code

String

응답코드

result.id

String

공지사항 ID

result.title

String

제목

result.content

String

내용

result.fileCnt

Number

파일수

result.readCnt

Number

조회수

result.createdBy

String

등록자

result.createdDt

String

등록일 yyyy-MM-dd HH:mm:ss

result.files[].id

String

파일 ID

result.files[].fileNm

String

파일명

result.files[].contentType

String

Content Type

result.files[].downloadCnt

Number

다운로드수

result.files[].fileUrl

String

파일Url

result.files[].createdBy

String

등록자

result.files[].createdDt

String

등록일 yyyy-MM-dd HH:mm:ss

공지사항 조회(B04)

Request

Request HTTP Example:

GET /notices?page=0&size=15&title=New HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MjksInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMjksImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.OTObmSea3CctVTwTVIIDomeVGjYeINSCaXaCryRn39d5rscRrr3Y2_1_t8FEumcpFpP33dh4k_QmrUb_9FZnlg
Accept: application/json
Host: localhost:8080

Header :

Name Required Description

Content-Type

true

application/json

Authorization

true

Access Token (JWT)

Request Parameters :

Parameter Required Description Validation

page

요청 페이지 (default 0)

Number

size

페이지당 출력수 (default 20)

Number

title

제목 (검색조건)

CURL :

$ curl 'http://localhost:8080/notices?page=0&size=15&title=New' -i -X GET \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MjksInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMjksImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.OTObmSea3CctVTwTVIIDomeVGjYeINSCaXaCryRn39d5rscRrr3Y2_1_t8FEumcpFpP33dh4k_QmrUb_9FZnlg' \
    -H 'Accept: application/json'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 3610

{
  "timestamp" : "2021-10-14 19:07:10",
  "code" : "40100",
  "result" : [ {
    "id" : "notice-5f72a9240a194c42ac8912a6dd08299b",
    "title" : "New Title : 20",
    "content" : "New Content : 20",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-b82ba12babb24cd399bfece79eb73989",
    "title" : "New Title : 19",
    "content" : "New Content : 19",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-c7f711ed656e483fbd4dad951518baa3",
    "title" : "New Title : 18",
    "content" : "New Content : 18",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-d7851a16c8e6425cbf995e83d74b07fb",
    "title" : "New Title : 17",
    "content" : "New Content : 17",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-7e14faf4d3a24ad89bacd11c7bb9bc6d",
    "title" : "New Title : 16",
    "content" : "New Content : 16",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-47c81d9c7766489f8c4a632e541c1321",
    "title" : "New Title : 15",
    "content" : "New Content : 15",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-36727bc74a1746c79de0aa9df5fd81bd",
    "title" : "New Title : 14",
    "content" : "New Content : 14",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-f3d76ce245da4b72ad3f3001280cff77",
    "title" : "New Title : 13",
    "content" : "New Content : 13",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-abe10bc677064196af9d73f4bd19e440",
    "title" : "New Title : 12",
    "content" : "New Content : 12",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-37ecac18ce0447be96fa12ca7c363cf9",
    "title" : "New Title : 11",
    "content" : "New Content : 11",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-de805090d6d84d7cb4e290615a19267d",
    "title" : "New Title : 10",
    "content" : "New Content : 10",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-5c83a0ac022142b39db2686f1a159518",
    "title" : "New Title : 9",
    "content" : "New Content : 9",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-4b211d2036584a9c915b64b5faaf73b0",
    "title" : "New Title : 8",
    "content" : "New Content : 8",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-08947f670f4f4efa83588876174661f8",
    "title" : "New Title : 7",
    "content" : "New Content : 7",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  }, {
    "id" : "notice-a88d4fc37e7c4a98b0d25feacc7a3459",
    "title" : "New Title : 6",
    "content" : "New Content : 6",
    "readCnt" : 0,
    "fileCnt" : 0,
    "createdBy" : "",
    "createdDt" : "2021-10-14 19:07:09"
  } ],
  "page" : {
    "size" : 15,
    "totalElements" : 20,
    "totalPages" : 2,
    "currentPage" : 0
  }
}

Response Fields:

Path Type Description

timestamp

String

응답시간

code

String

응답코드

result[].id

String

공지사항 ID

result[].title

String

제목

result[].content

String

내용

result[].fileCnt

Number

파일수

result[].readCnt

Number

조회수

result[].createdBy

String

등록자

result[].createdDt

String

등록일 yyyy-MM-dd HH:mm:ss

page.size

Number

페이지당 출력수

page.totalElements

Number

검색된 전체 요소 개수

page.totalPages

Number

전체 페이지 수

page.currentPage

Number

현재 페이지의 번호 (0부터 시작)

공지사항 삭제(B06)

Request

Request HTTP Example:

DELETE /notices/notice-f0363fc4f5e14658800556742a8a9a74 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA
Host: localhost:8080

Header :

Name Required Description

Content-Type

true

application/json

Authorization

true

Access Token (JWT)

Path Parameters : ./notices/{noticeId}

Parameter Required Description

noticeId

true

공지사항 ID

CURL :

$ curl 'http://localhost:8080/notices/notice-f0363fc4f5e14658800556742a8a9a74' -i -X DELETE \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 61

{
  "timestamp" : "2021-10-14 19:07:10",
  "code" : "40100"
}

Response Fields:

Path Type Description

timestamp

String

응답시간

code

String

응답코드

공지사항 첨부파일 다운로드(B06)

Request

Request HTTP Example:

GET /notices/notice-6d769b6857714c8c95dfefdb3130beea/attachments/att-1b9ada7b23324511a1f43c46ddff5d01 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA
Host: localhost:8080

Header :

Name Required Description

Content-Type

true

application/json

Authorization

true

Access Token (JWT)

Path Parameters : ./notices/{noticeId}/attachments/{attachmentId}

Parameter Required Description

noticeId

true

공지사항 ID

attachmentId

true

첨부파일 ID

CURL :

$ curl 'http://localhost:8080/notices/notice-6d769b6857714c8c95dfefdb3130beea/attachments/att-1b9ada7b23324511a1f43c46ddff5d01' -i -X GET \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/octet-stream;charset=UTF-8
Content-Length: 6
Content-Transfer-Encoding: binary
Content-Disposition: attachment; filename="File_1.txt"
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN

File 1

공지사항 첨부파일 삭제(B07)

Request

Request HTTP Example:

DELETE /notices/notice-c350b8ffd4e14c93aabcf9d3bedb32b9/attachments/att-8d09fa0d09084a498e7edd6271f2fde1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA
Host: localhost:8080

Header :

Name Required Description

Content-Type

true

application/json

Authorization

true

Access Token (JWT)

Path Parameters : ./notices/{noticeId}/attachments/{attachmentId}

Parameter Required Description

noticeId

true

공지사항 ID

attachmentId

true

첨부파일 ID

CURL :

$ curl 'http://localhost:8080/notices/notice-c350b8ffd4e14c93aabcf9d3bedb32b9/attachments/att-8d09fa0d09084a498e7edd6271f2fde1' -i -X DELETE \
    -H 'Content-Type: application/json;charset=UTF-8' \
    -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhdXRob3JpdHkiOiJST0xFX1VTRVIiLCJleHAiOjE2MzQyOTI0MzAsInVzZXJJZCI6InVzZXItMDEiLCJpYXQiOjE2MzQyMDYwMzAsImVtYWlsIjoidXNlcjAxQGdtYWlsLmNvbSJ9.IcCUo0rKc6TglY-zZ5-8V8fNX5ZUdg8rq2II8O6cFLB_IpXiugwhIUbNjhLA6HICa4XONG-uQNrzL8JSwS42WA'

Response

Response HTTP Example:

HTTP/1.1 200 OK
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json;charset=UTF-8
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: SAMEORIGIN
Content-Length: 61

{
  "timestamp" : "2021-10-14 19:07:10",
  "code" : "40100"
}

Response Fields:

Path Type Description

timestamp

String

응답시간

code

String

응답코드