姑娘视频在线观看免费完整版高清,5555www色欧美视频,俺也去.com,疯狂做受xxxx高潮视频免费,r级无码视频在线观看

跳轉(zhuǎn)至

新同步組織結(jié)構(gòu)接口

注: 所有接口只針對旗艦會員提供,非旗艦會員無法調(diào)用,所有開放平臺接口默認共享10QPS

同步考生數(shù)據(jù)可以方便的在系統(tǒng)之間進行考生數(shù)據(jù)交換,避免手動可能出現(xiàn)的錯誤;自動同步及時快捷,即可以同步考生信息也可以同步考生的組織結(jié)構(gòu)。

分組管理

優(yōu)考試通過組來管理考生,可以把組理解為班級,部門;優(yōu)考試支持無限層級樹狀組管理,如下圖所示

樹狀管理

1、插入組

插入組:

POST https://api.kyexam.com/api/v1/student/addcategory

參數(shù):

code=權(quán)限碼&time=當前時間戳

參數(shù)說明:

  • code 每個賬戶唯一對應(yīng)的驗證碼,string類型,旗艦會員及以上可在系統(tǒng)設(shè)置->開放平臺設(shè)置中獲取。

  • time 當前時間戳,例如1638768935。

  • parentGid 父節(jié)點id。 如傳0,代表插入根節(jié)點。

  • title 新建組組名。

  • Authorization 放到請求頭的Token,詳見示例代碼。簡單來說就是:將當前時間戳和您的code拼接起來,進行MD5加密而得。

如果操作成功,則返回:

{
    "gid":2995, //插入成功后的組id
    "status":"ok"
}

如果操作失敗,則返回:


接口使用示例:

package main

import (
    "crypto/md5"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "net/url"
    "os"
    "strconv"
    "strings"
    "time"
)

const (
    Code = "xxx"
)

func main() {
    host := "https://api.kyexam.com"
    resource := "/api/v1/student/addcategory"

    client := &http.Client{}
    fullPath := host + resource

    time64 := time.Now().UTC().Unix()

    data := make(url.Values)
    data["code"] = []string{Code}

    data["parentGid"] = []string{"0"}
    data["title"] = []string{"新建組"}

    data["time"] = []string{strconv.Itoa(int(time64))}

    req, _ := http.NewRequest(http.MethodPost, fullPath, strings.NewReader(data.Encode()))

    ParseToken := fmt.Sprintf("%x", md5.Sum([]byte(strconv.FormatInt(time64, 10)+Code)))
    req.Header.Set("Authorization", ParseToken)

    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

    resp, err := client.Do(req)
    if err != nil {
        log.Println(err)
        return
    }

    defer resp.Body.Close()

    b, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println(err)
        return
    }

    fmt.Println(string(b))
    f, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
    f.Write(b)
}

2、編輯組名稱

編輯組名稱:

POST https://api.kyexam.com/api/v1/student/renamegroup

參數(shù):

code=權(quán)限碼&time=當前時間戳

參數(shù)說明:

  • code 每個賬戶唯一對應(yīng)的驗證碼,string類型,旗艦會員及以上可在系統(tǒng)設(shè)置->開放平臺設(shè)置中獲取。

  • time 當前時間戳,例如1638768935。

  • gid 被修改組的組id。

  • title 新組名。

  • Authorization 放到請求頭的Token,詳見示例代碼。簡單來說就是:將當前時間戳和您的code拼接起來,進行MD5加密而得。

如果操作成功,則返回:

{
    "gid":2995,
    "oldTitle":"新建組", //舊組名
    "status":"ok"
}

如果操作失敗,則返回:


接口使用示例:

package main

import (
    "crypto/md5"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "net/url"
    "os"
    "strconv"
    "strings"
    "time"
)

const (
    Code = "xxx"
)

func main() {
    host := "https://api.kyexam.com"
    resource := "/api/v1/student/renamegroup"

    client := &http.Client{}
    fullPath := host + resource

    time64 := time.Now().UTC().Unix()

    data := make(url.Values)
    data["code"] = []string{Code}

    data["gid"] = []string{"2995"}
    data["title"] = []string{"新組名"}

    data["time"] = []string{strconv.Itoa(int(time64))}

    req, _ := http.NewRequest(http.MethodPost, fullPath, strings.NewReader(data.Encode()))

    ParseToken := fmt.Sprintf("%x", md5.Sum([]byte(strconv.FormatInt(time64, 10)+Code)))
    req.Header.Set("Authorization", ParseToken)

    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

    resp, err := client.Do(req)
    if err != nil {
        log.Println(err)
        return
    }

    defer resp.Body.Close()

    b, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println(err)
        return
    }

    fmt.Println(string(b))
    f, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
    f.Write(b)
}

3、刪除組

刪除組:

POST https://api.kyexam.com/api/v1/student/delGroup

參數(shù):

code=權(quán)限碼&time=當前時間戳

參數(shù)說明:

  • code 每個賬戶唯一對應(yīng)的驗證碼,string類型,旗艦會員及以上可在系統(tǒng)設(shè)置->開放平臺設(shè)置中獲取。

  • time 當前時間戳,例如1638768935。

  • gid 被刪除組的組id。

  • Authorization 放到請求頭的Token,詳見示例代碼。簡單來說就是:將當前時間戳和您的code拼接起來,進行MD5加密而得。

如果操作成功,則返回:

{
    "status":"ok"
}

如果操作失敗,則返回:


接口使用示例:

package main

import (
    "crypto/md5"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "net/url"
    "os"
    "strconv"
    "strings"
    "time"
)

const (
    Code = "xxx"
)

func main() {
    host := "https://api.kyexam.com"
    resource := "/api/v1/student/delGroup"

    client := &http.Client{}
    fullPath := host + resource

    time64 := time.Now().UTC().Unix()

    data := make(url.Values)
    data["code"] = []string{Code}

    data["gid"] = []string{"2996"}

    data["time"] = []string{strconv.Itoa(int(time64))}

    req, _ := http.NewRequest(http.MethodPost, fullPath, strings.NewReader(data.Encode()))

    ParseToken := fmt.Sprintf("%x", md5.Sum([]byte(strconv.FormatInt(time64, 10)+Code)))
    req.Header.Set("Authorization", ParseToken)

    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

    resp, err := client.Do(req)
    if err != nil {
        log.Println(err)
        return
    }

    defer resp.Body.Close()

    b, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println(err)
        return
    }

    fmt.Println(string(b))
    f, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
    f.Write(b)
}

4、移動組

移動組:

POST https://api.kyexam.com/api/v1/student/mvgroup

參數(shù):

code=權(quán)限碼&time=當前時間戳

參數(shù)說明:

  • code 每個賬戶唯一對應(yīng)的驗證碼,string類型,旗艦會員及以上可在系統(tǒng)設(shè)置->開放平臺設(shè)置中獲取。

  • time 當前時間戳,例如1638768935。

  • gid 被移動組的組id。

  • mvToGid 目標組id。

  • Authorization 放到請求頭的Token,詳見示例代碼。簡單來說就是:將當前時間戳和您的code拼接起來,進行MD5加密而得。

如果操作成功,則返回:

{
    "status":"ok"
}

如果操作失敗,則返回:


接口使用示例:

package main

import (
    "crypto/md5"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "net/url"
    "os"
    "strconv"
    "strings"
    "time"
)

const (
    Code = "xxx"
)

func main() {
    host := "https://api.kyexam.com"
    resource := "/api/v1/student/mvgroup"

    client := &http.Client{}
    fullPath := host + resource

    time64 := time.Now().UTC().Unix()

    data := make(url.Values)
    data["code"] = []string{Code}

    data["gid"] = []string{"2996"}
    data["mvToGid"] = []string{"2995"}

    data["time"] = []string{strconv.Itoa(int(time64))}

    req, _ := http.NewRequest(http.MethodPost, fullPath, strings.NewReader(data.Encode()))

    ParseToken := fmt.Sprintf("%x", md5.Sum([]byte(strconv.FormatInt(time64, 10)+Code)))
    req.Header.Set("Authorization", ParseToken)

    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

    resp, err := client.Do(req)
    if err != nil {
        log.Println(err)
        return
    }

    defer resp.Body.Close()

    b, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println(err)
        return
    }

    fmt.Println(string(b))
    f, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
    f.Write(b)
}

5、獲取組列表

獲取組列表:

GET https://api.kyexam.com/api/v1/student/lsgroups?code=權(quán)限碼&time=當前時間戳

參數(shù):

code=權(quán)限碼&time=當前時間戳

參數(shù)說明:

  • code 每個賬戶唯一對應(yīng)的驗證碼,string類型,旗艦會員及以上可在系統(tǒng)設(shè)置->開放平臺設(shè)置中獲取。

  • time 當前時間戳,例如1638768935。

  • gid(可選) 代表僅查詢當前組下的子組。 如要查詢所有組,不需要傳該值。

  • Authorization 放到請求頭的Token,詳見示例代碼。簡單來說就是:將當前時間戳和您的code拼接起來,進行MD5加密而得。

如果操作成功,則返回:

{
    "data":[
        {
            "gid":2989,
            "title":"2989組名"
        },
        {
            "gid":2987,
            "title":"2987組名"
        }
    ],
    "status":"ok"
}

//備注:返回組列表為當前組的子組,不包括孫子組,且如某一組內(nèi)沒有學(xué)生,不會出現(xiàn)在組列表中.

如果操作失敗,則返回:


接口使用示例:

package main

import (
    "crypto/md5"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "os"
    "strconv"
    "time"
)

const (
    Code = "xxx"
)

func main() {
    host := "https://api.kyexam.com"
    resource := "/api/v1/student/lsgroups"

    client := &http.Client{}
    fullPath := host + resource

    req, _ := http.NewRequest(http.MethodGet, fullPath, nil)
    time64 := time.Now().UTC().Unix()
    ParseToken := fmt.Sprintf("%x", md5.Sum([]byte(strconv.FormatInt(time64, 10)+Code)))
    req.Header.Set("Authorization", ParseToken)

    q := req.URL.Query()
    q.Add("code", Code)

    q.Add("gid", "2988")

    q.Add("time", strconv.Itoa(int(time64)))

    req.URL.RawQuery = q.Encode()

    resp, err := client.Do(req)
    if err != nil {
        log.Println(err)
        return
    }

    defer resp.Body.Close()

    b, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println(err)
        return
    }

    // fmt.Println(string(b))
    f, _ := os.OpenFile("test.txt", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
    f.Write(b)
}