# API第三方之用法
*2021/7/15*
swagger : https://api.preprod.imf-go.com/client/api-documentation/#/
## 科技
我們用的科技是 REST https://zh.wikipedia.org/wiki/表现层状态转换
## 呼叫API通用格式
:::info
[請求方法] https://api.imf-go.com/[API名稱]
:::
* ### 請求方法:
**GET**
向指定的資源發出「顯示」請求。使用GET方法應該只用在讀取資料,而不應當被用於產生「副作用」的操作中,例如在網路應用程式中。其中一個原因是GET可能會被網路爬蟲等隨意存取。參見安全方法。瀏覽器直接發出的GET只能由一個url觸發。GET上要在url之外帶一些參數就只能依靠url上附帶querystring。
**POST**
向指定資源提交資料,請求伺服器進行處理(例如提交表單或者上傳檔案)。資料被包含在請求本文中。這個請求可能會建立新的資源或修改現有資源,或二者皆有。每次提交,表單的資料被瀏覽器用編碼到HTTP請求的body里。瀏覽器發出的POST請求的body主要有兩種格式,一種是application/x-www-form-urlencoded用來傳輸簡單的資料,大概就是"key1=value1&key2=value2"這樣的格式。另外一種是傳檔案,會採用multipart/form-data格式。採用後者是因為application/x-www-form-urlencoded的編碼方式對於檔案這種二進位的資料非常低效。
**PUT**
向指定資源位置上傳其最新內容。
**DELETE**
請求伺服器刪除Request-URI所標識的資源。
* ### Token
您用API的時候,為了確認使用者的身份,REST需要多知道一個資料才會上線成功。這在叫Token(APIkey)。Token是放在請求的header裡面。

* ### Parameters
怎麼用到一些parameters呢 ?
REST科技使用所謂的 body。有的請求方法必續使用body才可以進行(比如:PUT, POST, DELETE)
簡單來講,若您需要新增工單,您需要給資料才能建立工單 (POST)
若您想要刪除,您需要設定哪一個工單,因而需要給ID的資料等等⋯⋯(DELETE)
body example:
```json=
{
"key":value
"key2":value2,
"key3":value3,
"key4":value4
}
```


* ### 請求回復
| Code | Status |
| -------- | -------- |
| 200 | 成功 |
| 400 | 失敗 |
---
## FUNCTIONS:
**1.建立工單**
請求方法 = POST
API名稱 = client/order
body :
```json=
{
"device_num": "1A-1-2",
"device_name": "Wudang",
"tonnage": 250,
"mold_num": "P00990",
"product_name": "CARRIAGE-SCANNER",
"cavity_amount": 4,
"best_cycle": 35,
"material_num": "RNABS011G25",
"base_material": "ABS+20%GF",
"expect_quantity": 100000,
"order_num": "4079002"
}
```
:::info
POST https://api.imf-go.com/client/order
:::
---
**2.List orders**
請求方法 = GET
API名稱 = client/order
no body
:::info
GET https://api.imf-go.com/client/order
:::
---
**3.刪除工單**
請求方法 = DELETE
API名稱 = client/order
body:
```json=
{
"id": 1
}
```
:::info
DELETE https://api.imf-go.com/client/order
:::
---
**4.更新工單**
請求方法 = PUT
API名稱 = client/order/{id}
*為了知道要改什麼工單,連結的後面需要輸入工單的ID。*
(比如:https://api.imf-go.com/client/order/1)
body:
```json=
{
"device_num": "1A-1-2",
"device_name": "Wudang",
"tonnage": 250,
"mold_num": "P00990",
"product_name": "CARRIAGE-SCANNER",
"cavity_amount": 4,
"best_cycle": 35,
"material_num": "RNABS011G25",
"base_material": "ABS+20%GF",
"expect_quantity": 100000,
"order_num": "4079002"
}
```
:::info
PUT https://api.imf-go.com/client/order/{id}
:::