HTTP

Nubison IoT HTTP ν‘œμ€€ κ·œκ²©μž…λ‹ˆλ‹€.

Nubison IoT ν”Œλž«νΌμ— HTTPλ₯Ό 톡해 데이터λ₯Ό μ „μ†‘ν•˜λŠ” λ””λ°”μ΄μŠ€λ₯Ό μ—°κ²°ν•˜κΈ° μœ„ν•œ κ°€μ΄λ“œμž…λ‹ˆλ‹€.

μ•„λž˜ 과정을 μ§„ν–‰ν•˜κΈ° 전에, μ‹œμž‘ν•˜κΈ°μ— 적힌 과정듀이 λ°˜λ“œμ‹œ μ„ ν–‰λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

μ„œλ²„ μ—°κ²°

Nubison IoT ν”Œλž«νΌμ— HTTP둜 μ—°κ²°ν•˜κΈ° μœ„ν•œ μ •λ³΄μž…λ‹ˆλ‹€.

  • μ„œλ²„ URL: 연동 μ§„ν–‰μ‹œ μ•ˆλ‚΄

λ””λ°”μ΄μŠ€ 둜그인

Nubison IoT ν”Œλž«νΌμ— λ””λ°”μ΄μŠ€λ₯Ό λ‘œκ·ΈμΈν•©λ‹ˆλ‹€.

λ‹€λ₯Έ μš”μ²­μ„ μ§„ν–‰ν•˜κΈ° 전에 λ‘œκ·ΈμΈμ„ λ°˜λ“œμ‹œ μ§„ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

둜그인 μš”μ²­ μ‘λ‹΅μœΌλ‘œ λŒμ•„μ˜€λŠ” μ•‘μ„ΈμŠ€ 토큰을 μ΄μš©ν•˜μ—¬ λ‹€λ₯Έ μš”μ²­λ“€μ„ 보낼 수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ Nubison IoT ν”Œλž«νΌ μ›Ήμ—μ„œ νƒ€μž„λΌμΈμ— β€œν΄λΌμš°λ“œ 접속”이 κΈ°λ‘λ©λ‹ˆλ‹€.

POST /devices/login

[Request]

Content-Type: application/x-www-form-urlencoded

<Header>

key
ν•„μˆ˜ μ—¬λΆ€
μ„€λͺ…

Authorization

O

Basic <${ν΄λΌμ΄μ–ΈνŠΈ ID}:${ν΄λΌμ΄μ–ΈνŠΈ Secret}을 base64 μΈμ½”λ”©ν•œ 슀트링>

ex.

ν΄λΌμ΄μ–ΈνŠΈ ID = AbCdE123, ν΄λΌμ΄μ–ΈνŠΈ Secret = xyzabc123 이라고 ν•˜λ©΄,

Basic AbCdE123:xyzabc123

μ—¬κΈ°μ—μ„œ AbCdE123:xyzabc123λ₯Ό Base64 인코딩

(Basic QmFzaWMgQWJDZEUxMjM6eHl6YWJjMTIz)을 보내주셔야 ν•©λ‹ˆλ‹€.

<Body>

key
required
λΉ„κ³ 

deviceKey

O

λ””λ°”μ΄μŠ€ ν‚€

[Response] Content-Type: application/json

status

message

body

200

OK

{

"AccessToken" : "...."

}

400

Bad Request

{

"code" :"ERROR401",

"message": "authorization header does not exist."

}

{

"code" :"ERROR402",

"message": "deviceKey is missing."

}

{

"code" :"ERROR403",

"message": "client is not valid."

}

405

Not Found

// μ„œλΉ„μŠ€κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우

415

Invalid content-type

// content-type must be application/json

λ””λ°”μ΄μŠ€ λ‘œκ·Έμ•„μ›ƒ

NUBISON IoT ν”Œλž«νΌμ—μ„œ λ””λ°”μ΄μŠ€κ°€ λ‘œκ·Έμ•„μ›ƒν•©λ‹ˆλ‹€.

μ‚¬μš©ν–ˆλ˜ 토큰이 λ§μ†Œλ˜λ©°, Nubison IoT ν”Œλž«νΌ μ›Ήμ—μ„œ νƒ€μž„λΌμΈμ— ν΄λΌμš°λ“œ μ ‘μ†ν•΄μ œκ°€ κΈ°λ‘λ©λ‹ˆλ‹€.

POST /devices/logout

[Request]

Content-Type: application/json

<Body>

key
ν•„μˆ˜ μ—¬λΆ€
μ„€λͺ…

accessToken

O

NUBISON IoT ν”Œλž«νΌ 둜그인 μ‹œ μ„œλ²„λ‘œλΆ€ν„° 받은 μ ‘κ·Ό 토큰

deviceKey

O

λ””λ°”μ΄μŠ€ ν‚€

μ˜ˆμ‹œ

{
  "accessToken": "FDFC4115B4275502fc6a6111",
  "deviceKey": "IQY9TFMH_HTTPABC"
}

[Response] Content-Type: application/json

status

message

body

200

OK

// μ„œλ²„μ—μ„œ 둜그인 μ‹œ λ°œκΈ‰ν•œ access token을 μ‚­μ œν•©λ‹ˆλ‹€.

400

Bad Request

{

"code" :"ERROR402",

"message": "deviceKey is missing."

}

{

"code" :"ERROR404",

"message": "accessToken is missing."

}

401

Unauthorized

// accessToken is not valid.

405

Not Found

service is not found. or device is not registered.

415

Invalid content-type

// content-type must be application/json

데이터 전솑

Nubison IoT ν”Œλž«νΌμ— λ””λ°”μ΄μŠ€ 데이터λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€.

POST /devices/data

[Request] Content-Type: application/json

<Body>

key
ν•„μˆ˜ μ—¬λΆ€
λΉ„κ³ 

accessToken

O

둜그인 μ‹œ μ„œλ²„λ‘œλΆ€ν„° 받은 μ ‘κ·Ό 토큰

deviceKey

O

λ””λ°”μ΄μŠ€ ν‚€

data

O

λ””λ°”μ΄μŠ€ 데이터

[Response] Content-Type: application/json

status

message

body

201

Created

400

Bad Request

{

"code" :"ERROR402",

"message": "deviceKey is missing."

}

{

"code" :"ERROR404",

"message": "accessToken is missing."

}

{

"code" :"ERROR406",

"message": "data is missing."

}

401

Unauthorized

// accessToken is not valid.

415

Invalid content-type

// content-type must be application/json

μžλ™ λ“œλΌμ΄λ²„ 이용 μ‹œ κΈ°λ³Έ νŽ˜μ΄λ‘œλ“œ 규격

Nubison IoT ν”Œλž«νΌμ—μ„œ μžλ™ μƒμ„±λœ λ“œλΌμ΄λ²„λ₯Ό μ΄μš©ν•˜λŠ” 경우 Body의 data 값을 λ‹€μŒκ³Ό 같이 λ³΄λ‚΄μ£Όμ‹œλ©΄ λ””λ°”μ΄μŠ€κ°€ 보낸 데이터λ₯Ό Nubison IoT ν”Œλž«νΌμ— μ €μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

{
  ...
  "data": {
    "μœ λ‹›λ²ˆν˜Έ": μœ λ‹› κ°’
  }
}

μžλ™λ“œλΌμ΄λ²„λ₯Ό μ΄μš©ν•˜μ‹œλŠ” 경우 λ‹€μŒκ³Ό 같이 데이터λ₯Ό κ΅¬μ„±ν•˜μ‹œλ©΄ λ©λ‹ˆλ‹€.

  • request body json κ°’ μ€‘μ—μ„œ, "data" key ν•˜μœ„μ—, "μœ λ‹›λ²ˆν˜Έ"λ₯Ό key둜 ν•˜κ³  "μœ λ‹› κ°’"을 value 둜 ν•˜λŠ” json 객체λ₯Ό κ΅¬μ„±ν•˜μ—¬ 데이터λ₯Ό μ „μ†‘ν•©λ‹ˆλ‹€. (μžλ™ μƒμ„±λœ λ“œλΌμ΄λ²„λ₯Ό μ΄μš©ν•˜λŠ” 경우, λ””λ°”μ΄μŠ€κ°€ 보낸 데이터λ₯Ό Nubison IoT ν”Œλž«νΌ μ„œλ²„μ—μ„œ μœ λ‹›λ²ˆν˜Έ κΈ°μ€€μœΌλ‘œ 데이터λ₯Ό κ΅¬λΆ„ν•˜μ—¬ ν•΄λ‹Ή μœ λ‹› 번호의 κ°’μœΌλ‘œ 데이터λ₯Ό μ €μž₯ν•˜κ²Œ λ©λ‹ˆλ‹€.)

  • 숫자, μœ„μΉ˜ λ°μ΄ν„°λŠ” 숫자 포맷으둜,

  • 문자 λ°μ΄ν„°λŠ” 문자 포맷으둜,

  • 숫자 λ°°μ—΄ λ°μ΄ν„°λŠ” 숫자 λ°°μ—΄ 포맷으둜,

  • 문자 λ°°μ—΄ λ°μ΄ν„°λŠ” 문자 λ°°μ—΄ 포맷으둜,

  • μ΄λ―Έμ§€λŠ” base64둜 μΈμ½”λ”©ν•œ 슀트링

0번: μ˜¨λ„ (숫자)
1번: μŠ΅λ„ (숫자)
2번: λͺ¨λ“œ (문자)
3번: μœ„λ„ (μœ„μΉ˜)
4번: 경도 (μœ„μΉ˜)
5번: μ˜¨λ„ 데이터 λ°°μ—΄ (숫자 λ°°μ—΄)
6번: λͺ¨λ“œ 데이터 λ°°μ—΄ (문자 λ°°μ—΄)
7번: 촬영 이미지 (이미지)

데이터λ₯Ό λ‹€μŒκ³Ό 같이 보낸닀면

0번 μœ λ‹› "μ˜¨λ„" 데이터 κ°’: 32
1번 μœ λ‹› "μŠ΅λ„" 데이터 κ°’: 46
2번 μœ λ‹› "λͺ¨λ“œ" 데이터 κ°’: "default"
3번 μœ λ‹› "μœ„λ„" 데이터 κ°’: 38.23
4번 μœ λ‹› "경도" 데이터 κ°’: 128.34
5번 μœ λ‹› "μ˜¨λ„ 데이터 λ°°μ—΄" 데이터 κ°’: [27,28,24,23,25]
6번 μœ λ‹› "λͺ¨λ“œ 데이터 λ°°μ—΄" 데이터 κ°’: ["default", "sleep", "mood"]
7번 μœ λ‹› "이미지" 데이터 κ°’: /9j/4AAQSkZJRgABAQAAAQABAAD/2w...

νŽ˜μ΄λ‘œλ“œλ₯Ό λ‹€μŒκ³Ό 같이 κ΅¬μ„±ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.

{
    "deviceKey": "AZ29TVMH_HTTPSAMPLE123", // 데이터λ₯Ό 보낼 λ””λ°”μ΄μŠ€μ˜ λ””λ°”μ΄μŠ€ ν‚€
    "accessToken": "CDAC4215B4271202fc6a6111", // POST /devices/login을 톡해 받은 μ•‘μ„ΈμŠ€ 토큰
    "data": {
        "0": 32,
        "1": 84,
        "2": "default",
        "3": 38.23,
        "4": 128.34,
        "5": [27,28,24,23,25],
        "6": ["default", "sleep", "mood"],
        "7": "/9j/4AAQSkZJRgABAQAAAQABAAD/2w..."
    }
}

Last updated

Was this helpful?