DataService Studio, işlevler yazmanıza ve bunları API'lerle ilişkilendirerek filtre olarak kullanmanıza olanak tanır. Bu konuda, Aviator işlevleri ve sözdizimlerini kullanarak işlev mantığının nasıl yazılacağına ilişkin örnekler sunulmaktadır.
Senaryolar
Bir işlevi bir API için ön filtre olarak ayarlarsanız, API çağrıldığında bu işlev API'nin istek parametrelerini önceden işleyebilir.
Bir işlevi bir API için arka filtre olarak ayarlarsanız, API çağrıldığında bu işlev API'nin dönüş değerlerini yeniden işleyip dönüştürebilir.
Kullanıcı kılavuzu
İşlevlerin nasıl oluşturulacağı, test edileceği, kaydedileceği, yayınlanacağı, silineceği, taşınacağı ve kopyalanacağı hakkında daha fazla bilgi için bkz. İşlevleri yönetme, İşlevleri test etme, yayınlama ve kullanma ve İşlevleri yayınlama.
İşlevlerin API ön filtreleri ve arka filtreleri olarak nasıl kullanılacağı hakkında daha fazla bilgi için bkz. Aviator işlevi oluşturma.
Aviator işlev sözdizimi hakkında daha fazla bilgi için bkz. İşlev sözdizimi.
Giriş parametresi örnekleri
Aviator kodunda, varsayılan değişken adı $0 işlevin tüm girişini ifade eder.
-
Senaryo 1: Bir API ön filtresi olarak Aviator işlevi kullanma
Bu senaryoda, API'nin istek parametreleri tek katmanlı bir JSON yapısında işlevin tüm girişi olarak kullanılır. Aşağıdaki örnek, istek parametrelerinin işlev girişi olarak nasıl göründüğünü gösterir:
## The request parameter is user_id ## Multiple parameter values are passed when the API is called: user_id = (0,1,2) { "user_id": [0,1,2] } -
Senaryo 2: Bir API arka filtresi olarak Aviator işlevi kullanma
Bu senaryoda, API'nin dönüş değeri çok katmanlı bir JSON yapısında işlevin tüm girişi olarak kullanılır. Aşağıdaki örnek, bir dönüş değerinin işlev girişi olarak nasıl göründüğünü gösterir:
## The return result contains three columns: user_id, city, and tags ## After the API is called, three matching data records are returned (see rows) { "data": { "totalNum": 3, "pageSize": 10, "rows": [ { "user_id": 2, "city": "BJ", "tags": "B,D,dongcs,ccccc" }, { "user_id": 3, "city": "SH", "tags": "A,C,D,F" }, { "user_id": 1, "city": "HZ", "tags": "A,B,C" } ], "pageNum": 1 }, "errCode": 0, "requestId": "0bb211c516357674333185698eb07b", "errMsg": "success", "apiLog": null }
İşlev kullanım örnekleri
Senaryo 1: Bir API ön filtresi olarak Aviator işlevi kullanma. Aşağıdaki örnekler işlevin nasıl kullanılacağını gösterir:
-
Örnek 1: İşlev çağrıldığında, istemciden gelen bir istek parametresinin değerini değiştirir.
-
Aviator işlevi:
## For the request parameter user_id, the original value passed from the client is user_id=1 ## After being processed by the filter, the actual value for the query is user_id=2 if $0.user_id == 1 { $0.user_id = $0.user_id + 1; } return $0; -
İşlev girişi ve çıkışı:
## Input: { "user_id": 1 } ## Output: { "user_id": 2 }
-
-
Örnek 2: İşlev çağrıldığında, istemci tarafından iletilmeyen bir istek parametresine değer atar. Bu durum, istek parametresinin zorunlu olmadığı ve hiçbir değer iletilmediği senaryolarda geçerlidir.
-
Aviator işlevi:
## For the request parameter user_id, the original value passed from the client is user_id= ## After being processed by the filter, the actual value for the query is user_id=1 $0.user_id = 1; return $0; -
İşlev girişi ve çıkışı:
## Input: { "user_id": "" } ## Output: { "user_id": 1 }
-
-
Örnek 3: İşlev çağrıldığında, istemci tarafından iletilen bir istek parametresi bir dizi ise (yani tek bir parametre için birden çok değer iletiliyorsa), işlev diziyi yineleyebilir ve döngü koşuluna göre her bir değeri değiştirebilir.
-
Aviator işlevi:
## For the request parameter user_id, the original value passed from the client is user_id=(0,1,2) ## After being processed by the filter, the actual value for the query is user_id=(1,2,3) user_id = $0.user_id; for index in user_id { user_id[index] = index + 1; } return $0; -
İşlev girişi ve çıkışı:
## Input: { "user_id": [0,1,2] } ## Output: { "user_id": [ 1, 2, 3 ] }
-
Senaryo 2: Bir API arka filtresi olarak Aviator işlevi kullanma. Aşağıdaki örnekler işlevin nasıl kullanılacağını gösterir:
-
Örnek 1: İşlev çağrıldıktan sonra, JSON formatındaki API dönüş değerindeki belirli bir kaydı değiştirir.
-
Aviator işlevi:
## First, get the innermost array 'rows' from the JSON. Then, traverse the array. When a record with "city":"BJ" is found, change "tags":"" to "tags":"DataService Studio" rows = $0.data.rows; for row in rows { if(row.city == "BJ") { row.tags = "DataService Studio"; } } return $0; -
İşlev girişi ve çıkışı:
## Input: { "data": { "totalNum": 3, "pageSize": 10, "rows": [ { "user_id": 2, "city": "BJ", "tags": "DataService Studio" }, { "user_id": 1, "city": "HZ", "tags": "A,B,C" }, { "user_id": 3, "city": "SH", "tags": "A,C,D,F" } ], "pageNum": 1 }, "errCode": 0, "requestId": "0bb211e016357705412263266e571e", "errMsg": "success", "apiLog": null } ## Output: { "data": { "totalNum": 3, "pageSize": 10, "rows": [ { "user_id": 2, "city": "BJ", "tags": "DataService Studio" }, { "user_id": 1, "city": "HZ", "tags": "A,B,C" }, { "user_id": 3, "city": "SH", "tags": "A,C,D,F" } ], "pageNum": 1 }, "errCode": 0, "requestId": "0bb211e016357705412263266e571e", "errMsg": "success" }
-
-
Örnek 2: İşlev çağrıldıktan sonra, JSON formatındaki API dönüş değerindeki her bir kayda sabit bir sütun ekler.
-
Aviator işlevi:
## First, get the innermost array 'rows' from the JSON. Then, traverse the array and add a constant column is_target= "Y" to each record. rows = $0.data.rows; for row in rows { row.is_target= "Y"; } return $0; -
İşlev girişi ve çıkışı:
## Input: { "data": { "totalNum": 3, "pageSize": 10, "rows": [ { "user_id": 2, "city": "BJ", "tags": "DataService Studio" }, { "user_id": 1, "city": "HZ", "tags": "A,B,C" }, { "user_id": 3, "city": "SH", "tags": "A,C,D,F" } ], "pageNum": 1 }, "errCode": 0, "requestId": "0bb211e016357705412263266e571e", "errMsg": "success", "apiLog": null } ## Output: { "data": { "totalNum": 3, "pageSize": 10, "rows": [ { "is_target": "Y", "user_id": 2, "city": "BJ", "tags": "DataService Studio" }, { "is_target": "Y", "user_id": 1, "city": "HZ", "tags": "A,B,C" }, { "is_target": "Y", "user_id": 3, "city": "SH", "tags": "A,C,D,F" } ], "pageNum": 1 }, "errCode": 0, "requestId": "0bb211e016357705412263266e571e", "errMsg": "success" }
-
-
Örnek 3: İşlev çağrıldıktan sonra, JSON formatındaki API dönüş değeri birçok alan içeriyorsa ve her bir alanın değerini tek tek kontrol etmek istemiyorsanız, tüm alanları yinelemek ve belirli alanların değerlerini değiştirmek için bir işlev kullanabilirsiniz.
-
Aviator işlevi:
## First, get the innermost array 'rows' from the JSON. Then, perform a nested traversal of the 'rows' array. For each element in 'rows', get its map. If a value in the map is null, change it to "test". ## In Aviator syntax, 'nil' is the null constant, equivalent to 'null' in other syntaxes. rows = $0.data.rows; for row in rows { for index in row { if(index.value == nil) { index.value = "test" } } } return $0; -
İşlev girişi ve çıkışı:
## Input: { "data": { "totalNum": 3, "pageSize": 10, "rows": [ { "user_id": null, "city": "SH", "tags": "A,C,D,F" }, { "user_id": 2, "city": "BJ", "tags": "DataService Studio" }, { "user_id": null, "city": null, "tags": "A,B,C" } ], "pageNum": 1 }, "errCode": 0, "requestId": "0bb211f016372870359913841e52d8", "errMsg": "success", "apiLog": null } ## Output: { "data": { "totalNum": 3, "pageSize": 10, "rows": [ { "user_id": "test", "city": "SH", "tags": "A,C,D,F" }, { "user_id": 2, "city": "BJ", "tags": "DataService Studio" }, { "user_id": "test", "city": "test", "tags": "A,B,C" } ], "pageNum": 1 }, "errCode": 0, "requestId": "0bb211f016372870359913841e52d8", "errMsg": "success" }
-