Prosedur Tersimpan: Deskripsi, Batas, dan Contoh

gambar

Pada artikel ini saya akan berbicara tentang prosedur tersimpan. Cara menggunakannya dan mengapa, membatasi, contoh prosedur keren yang saya gunakan.

Prosedur tersimpan memungkinkan Anda untuk mengeksekusi kode pada sisi server API dengan cara yang sama seperti metode eksekusi, tetapi tanpa melewati kode prosedur melalui jaringan.
Prosedur tersimpan adalah algoritma yang ditentukan sebelumnya yang memungkinkan Anda untuk mengimplementasikan panggilan cepat ke beberapa metode API sekaligus, mirip dengan prinsip metode eksekusi, tetapi tanpa mentransmisikan kode melalui jaringan (dalam permintaan Anda harus menentukan hanya nama prosedur dan parameter yang diperlukan).

Anda dapat membuat prosedur tersimpan baru pada tab yang sesuai di bagian pengeditan aplikasi Anda.
Kode untuk prosedur tersimpan ditulis dalam bahasa VKScript.

gambar
VKScript untuk metode eksekusi tidak selalu kecil, dan meneruskannya dalam permintaan sangat berani. Juga, untuk prosedur tersimpan, klien yang nyaman diimplementasikan langsung di Vkontakte. Tarik prosedur dengan namanya, dalam hal ini, Anda tidak perlu lagi melewati kode . Tanpa menggunakan prosedur tersimpan saat mengirim permintaan dari klien, kode Anda yang dikirim ke API dapat dilihat.
Dengan mengirim kode dari browser ke API, siapa pun dapat melihatnya. Saat mengirim hanya nama prosedur dan parameter yang tersimpan, kode tidak akan tersedia.

Batas

Maks permintaan per detik3
Maks ukuran respons5 MB
Maks jumlah panggilan di dalam prosedur untuk metode API25
Maks jumlah operasi dalam prosedur1000


Prosedur saya


  • Pencarian cerdas untuk orang tanpa tanggal lahir dan kota yang tepat - tidak masalah kota atau tanggal lahir yang ditentukan dalam profil pengguna.
    mengeksekusi.userSearch
    • Langkah 1
      1. Nama, tanggal lahir, kota. Menurut bidang ini, kami mencari kecocokan di antara akun Vkontakte yang memiliki foto. Jika kami menemukan 2 akun atau lebih, kami menggunakan akun dengan maksimum tanggal login terakhir. Jika tidak ada yang ditemukan, lanjutkan ke Langkah 2.

    • Langkah 2
      1. Menggunakan data dengan nama belakang dan nama depan, tanggal lahir, kami mencari kembali.
        Jika kami menemukan 2 akun atau lebih, lanjutkan ke Langkah 3.2. Jika tidak ada yang ditemukan, lanjutkan ke Langkah 3.3.

    • Langkah 3
      1. Kami mencari 10 grup paling populer dari kota Vkontakte terpilih.
      2. Dalam grup ini kami mencari FI, tanggal lahir, negara Rusia, ada foto. Jika sesuatu ditemukan, maka simpan hasil saat ini, jika tidak pergi ke langkah 3.3.
      3. Kami mencari grup berdasarkan FI, negara Rusia, ada foto. Jika sesuatu ditemukan, kami menyimpan hasilnya, jika tidak maka itu "kosong".

    var name = Args.fullname; var birth_day = Args.birth_day; var birth_month = Args.birth_month; var birth_year = Args.birth_year; var city = Args.city; var fields = "photo_id, sex, bdate, city, country, home_town, photo_max_orig, contacts, site, education, universities, schools, status, last_seen, followers_count, common_count, occupation, nickname, relatives, relation, personal, connections, exports, activities, interests, music, movies, tv, books, games, about, quotes, can_post, can_see_all_posts, can_see_audio, can_write_private_message, can_send_friend_request, is_favorite, is_hidden_from_feed, timezone, screen_name, maiden_name, career, military"; var countGroups = 10; var res = []; var item = {}; var city_id = 0; if (city != "") { city_id = API.database.getCities({"q": city, "country_id": 1}).items@.id[0]; } if (birth_day != "" && city_id > 0) { item = API.users.search({ "q": name, "country":1, "city": city_id, "has_photo":1, "fields": fields, "birth_day": birth_day, "birth_month": birth_month, "birth_year": birth_year }).items; var i = 0; while (i < item.length) { var item_ = item[i]; item_.criterion = " , , "; item_.step = "1.1"; res.push(item_); i = i +1; } } else { countGroups = countGroups + 1; } if (item.length > 0) { return res; } if (birth_day != "") { item = API.users.search({ "q": name, "country": 1, "has_photo": 1, "fields": fields, "birth_day": birth_day, "birth_month": birth_month, "birth_year": birth_year }).items; var i = 0; while (i < item.length) { var item_ = item[i]; item_.criterion = " , "; item_.step = "2.1"; res.push(item_); i = i +1; } } if (item.length > 0) { return res; } if (city.length > 0) { var groupsIDs = API.groups.search({ "q": city, "sort": 6, "type": "page", "count": countGroups }).items@.id; var count = 0; while (count < groupsIDs.length) { var item2 = {}; if (birth_day != "") { item2 = API.users.search({ "q": name, "country":1, "has_photo":1, "fields": fields, "birth_day": birth_day, "birth_month": birth_month, "birth_year": birth_year, "group_id": groupsIDs[count] }).items; } if (item2.length > 0) { var i = 0; while (i < item2.length) { var item_ = item2[i]; item_.criterion = " , ,    "; item_.step = "3.2"; item_.groupID = groupsIDs[count]; res.push(item_); i = i +1; } } else { item2 = API.users.search({ "q": name, "country":1, "has_photo":1, "fields": fields, "count": 5, "group_id": groupsIDs[count] }).items; var i = 0; while (i < item2.length) { var item_ = item2[i]; item_.criterion = ",    "; item_.step = "3.3"; item_.groupID = groupsIDs[count]; res.push(item_); i = i +1; } } count = count + 1; } } return res; 


  • Dapatkan daftar tanggal lahir teman-teman pengguna - Saya menggunakan metode ini untuk menentukan perkiraan usia seseorang.
    eksekusi.getFriendsBDates
     var response = ""; var bdates = API.friends.get({"user_id": Args.user_id, "fields": "bdate", "v": "5.103"}).items@.bdate; response = response + bdates; if (!bdates.length || bdates[0].length == 5000) { response = response + API.friends.get({"user_id": Args.user_id, "fields": "bdate", "offset": "5000", "v": "5.103"}).items@.bdate; } return response; 


  • Dapatkan daftar anggota komunitas.
    mengeksekusi.getMembers
     var members = API.groups.getMembers({"group_id": Args.group_id, "v": "5.27", "sort": "id_asc", "count": "1000", "offset": Args.offset}).items; //       var offset = 1000; //      while (offset < 25000 && (offset + Args.offset) < Args.total_count) //    20000       { members = members + "," + API.groups.getMembers({"group_id": Args.group_id, "v": "5.27", "sort": "id_asc", "count": "1000", "offset": (Args.offset + offset)}).items; //    offset +   offset = offset + 1000; //    1000 }; return members; 


  • Dapatkan daftar teman pengguna.
    eksekusi.getFriends
     var user_ids = Args.user_ids.split(','); var friends = API.friends.get({"user_id": user_ids[0], "v": "5.27", "sort": "id_asc", "count": "10000"}).items; var i = 1; while (user_ids.length > i && i < 25) { friends = friends + "," + API.friends.get({"user_id": user_ids[i], "v": "5.27", "sort": "id_asc", "count": "10000"}).items; i = i + 1; } return friends; 


  • Cari orang-orang di komunitas berdasarkan permintaan, misalnya, apakah pengguna berada dalam grup yang disebut "Film Online".
    execute.isMemberGroups
     var groups = API.groups.search({"q": Args.q, "v": "5.27", "offset": Args.offset, "count": "24"}).items; var members = []; var i = 0; while (groups.length > i) { var groupIsMember = []; groupIsMember.members = API.groups.isMember({"group_id": groups[i].id, "user_ids": Args.user_ids, "v": "5.27"}); groupIsMember.group_id = groups[i].id; members.push(groupIsMember); i = i + 1; } return members; 


Source: https://habr.com/ru/post/id475302/


All Articles