Introducción
Si desea utilizar BioStar 2 New Local API como una API RESTful para su propia personalización u otros fines, simplemente puede consultar este artículo. Este artículo cubrirá el uso más básico de la aplicación de consola BioStar 2 New Local API by C#.
Esta es solo una aplicación de muestra hecha para aquellos que podrían necesitar usar la Nueva API Local de BioStar 2. Es una aplicación de consola de Visual C#.
Funciones
Este artículo cubrirá las siguientes funciones:
- Iniciar sesión
- Buscar usuarios
- Crear usuarios
- Crear usuarios con access group
- Recuperar datos de registro
- Recuperar datos de registro con el pedido por
A través de este artículo, puede aprender a llamar a una función de API para recuperar los datos de registro dentro del período de tiempo desde y hasta el momento de su elección. Además, también tendrá que aclarar el número de registros que desea recuperar en el cuerpo de solicitud de la llamada.
Asegúrese de echar un buen vistazo al código de ejemplo del programa de C# creado para llamadas a la API. Simplemente puede copiar y pegar el código fuente para usar la misma función en su propia integración.
También puede ver cómo llamar a las funciones de la API a través de Postman, que es un programa utilizado para las llamadas a la API RESTful.
Parte 1. Llamada a la API y parámetros
[POST]: /events/search
[Parámetros]
Nombre | Tipo | *M/O | Explicación |
... |
|
|
|
límite | entero | O | # de resultados que desea buscar |
condiciones-columna | cuerda | O | Palabra clave para buscar['datetime','device_id.id','door_id.id','event_type_id.code','user_group_id.id','user_id.user_id'] |
Condiciones-valores | Matriz de cadenas | O | Dos matrices DateTime para el período del evento, la hora de finalización debe ser mayor que la hora de inicio. *Fecha y hora en UTC en formato ISO-8601 (por ejemplo, 2015-06-10T02:14:05.268Z) |
Condiciones-operador | entero | O | desc: Operador de condición[ IGUAL : 0, NOT_EQUAL : 1, CONTIENE : 2, ENTRE : 3, COMO : 4, MAYOR : 5, MENOS : 6] |
* M – Obligatorio, O – Opcional
Parte 2. Cuerpo de solicitud y modelo de respuesta
[Ejemplo de modelo de valor/parámetros]
{ "Consulta": { "límite": 100, "condiciones": [ { "columna": "fecha y hora", "operador": 3, "valores": [ "2021-08-01T15:00:00.000Z", "2021-08-02T14:59:59.000Z" ] } ] } } |
*"límite": 100 indica que solo vería 100 registros en la respuesta como resultado de la llamada a la API. Puede establecer este valor en consecuencia, ya que recuperar una gran cantidad de datos puede causar retrasos o bloqueos del servidor.
*"columna": DateTime indica que ordenaría los registros por el valor DateTime de los registros. Por ejemplo, solo verá los registros de 2021-08-01T15:00:00.000Z a 2021-08-02T14:59:59.000Z.
*Si lo cambia a "columna": id u otros valores, puede ordenar los registros por su id u otros valores en consecuencia.
[Respuesta: Exitosa]
{ "EventCollection": { "filas": [ { "id": "133", "server_datetime": "2021-08-02T13:08:27.00Z", "datetime": "2021-08-02T04:08:30.00Z", "índice": "346", "user_group_id": { "id": "0", "nombre": "" }, "device_id": { "id": "939271697", "nombre": "BioStation A2 939271697 (192.168.13.132)" }, "event_type_id": { "código": "20736" }, "door_id": [ { "id": "4", "nombre": "Puerta1" } ], "is_dst": "0", "zona horaria": { "mitad": "0", "hora": "9", "negativo": "0" }, "user_update_by_device": "falso", "pista": "162787731009392716970000000346", "user_id": { "photo_exists": "falso" } }, . |
*sugerencia: un valor de índice en cada tabla (registro mensual) en la base de datos de CA. A partir de los datos de registro 1er en la tabla, el número aumenta en 1 por cada nuevo dato de registro.
* Con 'pista', puede comprender que ciertos registros vienen después / antes de algunos registros, ya que puede compararlos.
Parte 3. Ejemplo de recuperación de registros de consola
[Código fuente del método Retrieve Logs]
static async void GetLogTask() { if(sessionID == null) { Console.WriteLine("¡Primero debe iniciar sesión!" ); volver; }
CookieContainer cookieContainer = nuevo CookieContainer();
Controlador HttpClientHandler = nuevo HttpClientHandler(); Controlador. CookieContainer = cookieContainer;
HttpClient httpClient = nuevo HttpClient(controlador);
Cliente HttpClient = nuevo HttpClient(controlador); httpClient.DefaultRequestHeaders.Add("bs-session-id", sessionID); cookieContainer.Add(new Uri("https://127.0.0.1"), new Cookie("bs-session-id",sessionID)); string resourceAddress = "https://127.0.0.1/api/events/search"; Console.WriteLine("¿Cuántos resultados desea ver?" ); límite de cadena = Console.ReadLine(); string startTime = "1970-01-01T00:00:00Z"; string endTime = DateTime.UtcNow.ToString("aaaa-MM-ddTHH:mm:ssZ");
DateTime dtLatestLogTime = nuevo DateTime(1970, 1, 1);
JavaScriptSerializer serializer = nuevo JavaScriptSerializer();
string payload2 = "{ \"Query\": { \"limit\": " + limit + ", \"conditions\": [ { \"column\": \"datetime\", \"operator\": 3, \"values\": [ \"" + startTime + "\", \"" + endTime + "\" ] } ] }}"; Console.WriteLine(payload2);
StringContent sc = new StringContent(payload2, Encoding.UTF8, "application/json"); HttpResponseMessage httpResponse = httpClient.PostAsync(resourceAddress, sc). Resultado;
if (httpResponse.IsSuccessStatusCode == true) { Console.WriteLine("Se ha logrado recuperar el registro de " + startTime + " a " + endTime); string httpResponseBody = await httpResponse.Content.ReadAsStringAsync(); Console.WriteLine(httpResponseBody); obj dinámico = JsonConvert.DeserializeObject(httpResponseBody); Console.WriteLine("*************** LOG("+limit+") : ***********""); Console.WriteLine("** LogID ********* DateTime ********** DeviceID ** para (int i = 0; i < Int16.Parse(limit); i++) { Console.WriteLine(obj. EventCollection.rows[i].id + " " + obj. EventCollection.rows[i].datetime + " " + obj. EventCollection.rows[i].device_id.id + " " + obj. EventCollection.rows[i].device_id.name + " " + obj. EventCollection.rows[i].event_type_id.code); } System.Threading.Thread.Sleep(1000); } más { Console.WriteLine("Error de recuperación de registros de " + startTime + " a " + endTime); Console.WriteLine(httpResponse.ToString()); }
} |
[Después de recuperar registros correctamente: solo logró ver algunos valores de los registros]
Parte 4. Recuperar registros a través de Postman
[Ejemplo de solicitud: Encabezados]
*Debe usar el valor 'be-session-id' del encabezado de respuesta de la llamada a la API de inicio de sesión para autenticar el uso de la API para otras llamadas a la API.
[Ejemplo de solicitud]
[Ejemplo de respuesta: cuerpo]