イントロ

独自のカスタマイズやその他の目的でRESTfulAPIとしてBioStar2 New Local APIを使用する場合は、この記事を参照してください。この記事では、C#コンソールアプリケーションによるBioStar 2 New Local APIの基本的な使用法について説明します。 

 

BioStar 2 New Local APIのSwaggerには、次のURLからアクセスできます:https://{BioStar2 IP}/swagger/index.html#/ 


* BioStar2 New Local APIはBioStar2.7.10以降でサポートします。


 

機能

この記事では、以下の機能について説明します。

  1. ログイン
  2. ユーザー検索
  3. ユーザー追加
  4. アクセスグループにユーザーを追加
  5. ログデータの取得
  6. 順序でログデータの取得

 

この記事では、API関数を呼び出してBioStar2サーバーにログインする方法を確認します。BioStar 2のユーザーIDとパスワードを入力し、他のAPI呼び出しを使用するための認証を簡単に取得できます。ログインに成功した後は、「bs-session-id」の管理方法に注意してください。

 API呼び出し用に作成されたC#プログラムのサンプルコードをご覧ください。ソースコードをコピーして貼り付けて同じ機能を使用できます。

また、RESTfulAPI呼び出しに使用するプログラムであるPostmanを介してAPI関数を呼び出す方法も確認します。


 

Part 1. API呼び出しとパラメーター

 

[POST]: /login

[パラメーター] 

グループ

名称

タイプ

*M/O

詳細

バリュー

User

Login_id

string

M

ログインID

 

 

password

string

M

パスワードd

 

   * M – 必要, O – オプション

 

Part 2. リクエストボディとレスポンスモデル

[例バリュー/パラメーターモデル]

{

  "User": {

    "login_id": "admin",

    "password": "qwer1234"

  }

}

 

[レスポンスモデル]

{

User      Res____User____272{

user_id string

example: 1

desc: User ID

 

name    string

example: Administrator

desc: Name

 

gender string

example: 1

@desc: User Gender

 

birthday               string

example: 1977-10-08T04:00:00.00Z

@desc: User Birthday

 

photo_exists     boolean

example: false

desc: Check Photo

 

pin_exists           boolean

example: false

desc: Check PIN

 

login_id string

example: admin

desc: Login ID

 

password_exists              boolean

example: true

desc: Check Password

 

updated_count string

example: 0

desc: Update Count

 

last_modified    string

example: 0

desc: Last Modify

 

start_datetime string

example: 2001-01-01T00:00:00.00Z

desc: Start DateTime

 

expiry_datetime              string

example: 2030-12-31T23:59:00.00Z

desc: Expiry DateTime

 

security_level    string

example: 0

desc: Security Level

~

}

{

Response            Res____Response{

code      string

example: 1003

desc : Response.code reference: C:\Program Files\BioStar 2(x64)\nginx\html\resources\messages_en.properties(ACB_ERROR_CODE.XXXXX)

 

link         string

example: https://support.supremainc.com/en/support/home

desc: Link URL

 

message              string

example: Success

desc: Message

 

}

httpResponseStatus       Res____httpResponseStatusinteger

example: 200

desc: HTTP Status Code

}

 

[レスポンス: エラー]

{

    "Response": {

        "code": "101",

        "link": "https://support.supremainc.com/en/support/home",

        "message": "Failed to login for invalid username or password"

    }

}

[レスポンス: 成功]

{

    "User": {

        "user_id": "1",

        "name": "Administrator",

        "gender": "0",

        "photo_exists": "false",

        "pin_exists": "false",

        "login_id": "admin",

        "password_exists": "true",

        "updated_count": "37",

        "last_modified": "63",

        "idx_last_modified": "24",

        "start_datetime": "2001-01-01T00:00:00.00Z",

        "expiry_datetime": "2030-12-31T23:59:00.00Z",

        "security_level": "0",

~    },

    "Response": {

        "code": "0",

        "link": "https://support.supremainc.com/en/support/home",

        "message": "Success"

    }

}

 

Part 3. コンソールログインの例

 

[ログインソースコード] 

static async void LoginTask()

        {

            string resourceAddress = "https://127.0.0.1:443/api/login"//Enter your BioStar 2 address & the API call you’d like to perform(login in this case)

 

            HttpClient httpClient = new HttpClient();

            

            JavaScriptSerializer serializer = new JavaScriptSerializer();

                 

            Dictionary<stringstring> dicLoginUser = new Dictionary<stringstring>();

           

            dicLoginUser.Add("login_id""admin"); // Enter BioStar 2 Admin Login ID

            dicLoginUser.Add("password""adminPassword"); // Enter your password of BioStar 2 Admin

            Dictionary<stringobject> dicLogin = new Dictionary<stringobject>();

            dicLogin.Add("User", dicLoginUser);  // Save your ID and PW to a parameter named “User” and add it to dicLogin

 

            string jsonLoginUser = serializer.Serialize(dicLogin);

            

            StringContent sc = new StringContent(jsonLoginUser, Encoding.UTF8, "application/json");

 

            // To load HTTPS Certificate

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

            

            //This is an example line to allow the certificate check is secure. You can have your own line for better secure of your application.

            //Please search stackoverflow for the error description - The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

            //A common reason you may receive the error above Could not establish trust relationship for the SSL/TLS secure channel is because the SSL certificate isn't trusted. 

           //Below code ignore the untrusted cert errors. 

            System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

            //HttpResponseMessage httpResponse = await httpClient.PostAsync(resourceAddress, sc);

            HttpResponseMessage httpResponse = httpClient.PostAsync(resourceAddress, sc).Result;

 

            if (httpResponse.IsSuccessStatusCode == true)

            {

                   Console.WriteLine(httpResponse.ToString());

                string httpResponseBody = await httpResponse.Content.ReadAsStringAsync();

                //Console.WriteLine(httpResponseBody);

                Console.WriteLine("Login successful...");

 

 

                MemoryStream responseMemoryStream = new MemoryStream();

                StreamWriter sw = new StreamWriter(responseMemoryStream);

                   sw.Write(httpResponse.ToString());

                sw.Flush();

 

                bool isSessionIDContained = httpResponse.Headers.Contains("bs-session-id");

                if (isSessionIDContained == true)

                {

                    IEnumerable<string> sessionEnum = httpResponse.Headers.GetValues("bs-session-id");

                    

                    foreach (string element in sessionEnum)

                    {

                        Console.WriteLine("bs-session-id: " + element);

                        sessionID = element;

                    }

                }

                else if (isSessionIDContained != false)

                {

                    Console.WriteLine("Session ID not found");

                }

            }          

            else

            {

                Console.WriteLine("Failed to log in");

                   Console.WriteLine(httpResponse.ToString());

            }            

        }

 

 

[正常にログした後] 

텍스트이(가) 표시된 사진 
자동 생성된 설명

 

 

 

Part 3. Postman経由でログイン

 

[リクエスト例] 

 

[レスポンス例:body] 

텍스트이(가) 표시된 사진 
자동 생성된 설명

 

[レスポンス例: Headers] 

*Postmanによる他のAPI呼び出しには、「be-session-id」値を使用してください。する必要があります。

텍스트, 스크린샷, 모니터, 텔레비전이(가) 표시된 사진 
자동 생성된 설명