イントロ
独自のカスタマイズやその他の目的でRESTfulAPIとしてBioStar2 New Local APIを使用する場合は、この記事を参照してください。この記事では、C#コンソールアプリケーションによるBioStar 2 New Local APIの基本的な使用法について説明します。
機能
この記事では、以下の機能について説明します。
この記事では、API関数を呼び出して、BioStar2サーバーに登録されているユーザーを検索する方法を確認します。ほとんどの場合、[GET]呼び出しはサーバーから情報を取得するだけなので、パラメータは含まれません。サーバーのユーザー情報を取得する[GET] / users呼び出しも、パラメーターの入力が必要ありません。
API呼び出し用に作成されたC#プログラムのサンプルコードをご覧ください。ソースコードをコピーして貼り付けて同じ機能を使用できます。
また、RESTfulAPI呼び出しに使用するプログラムであるPostmanを介してAPI関数を呼び出す方法も確認します。
Part 1. API呼び出し
[GET]: /users
Part 2. レスポンスモデル
{ UserCollection Res____UserCollection____6___C{ total string example: 8 @desc: User Total
rows [{ user_id string example: 2 @desc: User Id
name string example: 11 @desc: User Name
gender string example: 0 @desc: User Gender
photo_exists boolean example: false @desc: Use User Photo Exists
pin_exists boolean example: false @desc: Use User Pin Exists
password_exists boolean example: false @desc: Use User Password Exists
updated_count string example: 1 @desc: User Updated Count
last_modified string example: 25 @desc: User Last Modified
start_datetime string example: 2001-01-01T00:00:00.00Z @desc: User Start Datetime
expiry_datetime string example: 2030-12-31T23:59:00.00Z @desc: User Expiry Datetime
security_level string example: 0 @desc: User Security Level
display_duration string example: 0 @desc: User Display Duration
display_count string example: 0 @desc: User Display Count
inherited boolean example: false @desc: Use User Inherited
user_group_id { id string example: 1010 @desc: User Group Id
name string example: 123 @desc: User Group Id Name
} disabled boolean example: false @desc: Use User Disabled
expired boolean example: false @desc: Use User Expired
fingerprint_template_count string example: 1 @desc: User Fingerprint Template Count
face_count string example: 0 @desc: User Face Count
card_count string example: 0 @desc: User Card Count
access_groups [{ id string example: 3 @desc: Access Group Id
name string example: as @desc: Access Group Name
}] access_groups_in_user_group [{ id string example: 3 @desc: Access Groups In User Group Id
name string example: as @desc: Access Groups In User Group Name
}] }] } Response Res____Response___C{ code string example: 0 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____httpResponseStatus___Cinteger example: 200 desc: HTTP Status Code
} |
[レスポンス: エラー]
{ "Response": { "code": "10", "link": "https://support.supremainc.com/en/support/home", "message": "Login required." } } |
[レスポンス: 成功]
{ "UserCollection": { "total": "8", "rows": [ { "user_id": "1", "name": "Administrator", "gender": "0", "email": "peterk@suprema.co.kr",… "Response": { "code": "0", "link": "https://support.supremainc.com/en/support/home", "message": "Success" } } |
Part 3. コンソールユーザー検索の例
[ユーザー検索ソースコード]
static async void ListUsers() { if (sessionID == null) { Console.WriteLine("You must log in first!"); return; }
CookieContainer cookieContainer = new CookieContainer();
HttpClientHandler handler = new HttpClientHandler(); handler.CookieContainer = cookieContainer;
HttpClient client = new HttpClient(handler);
client.DefaultRequestHeaders.Add("bs-session-id", sessionID); cookieContainer.Add(new Uri("https://127.0.0.1"), new Cookie("bs-session-id", sessionID)); HttpResponseMessage httpResponse = client.GetAsync("https://127.0.0.1/api/users").Result;
if (httpResponse.IsSuccessStatusCode == true) { string httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); //Console.WriteLine(httpResponseBody); dynamic obj = JsonConvert.DeserializeObject(httpResponseBody); Console.WriteLine("**** USER ID LIST: ****"); int UserTotal = obj.UserCollection.total; for (int i = 0; i < UserTotal; i++) { Console.WriteLine(obj.UserCollection.rows[i].user_id + " " + obj.UserCollection.rows[i].name); } } else { Console.WriteLine("Listing Users Failed"); Console.WriteLine(httpResponse.ToString()); } }
|
[ユーザー検索成功]
*ソースコードは各ユーザーの2つの値のみを出力するため、ユーザーIDとユーザー名称のみを出力します。
Part 4. Postman経由でユーザー検索
[リクエスト例: ヘッダー]
*他のAPI呼び出しでのAPIの使用を認証するには、LoginAPI呼び出しのレスポンスヘッダーの「be-session-id」値を入力してください。
[リクエスト例]
[レスポンス例: body]