Dokumentasi gRPC API

API berperforma tinggi untuk data wilayah administrasi Indonesia: provinsi, kota/kabupaten, kecamatan, dan desa.
Menggunakan Protocol Buffers dan gRPC untuk throughput tinggi dan efisiensi bandwidth.

Apa itu gRPC?

gRPC adalah framework RPC (Remote Procedure Call) modern yang dikembangkan oleh Google. Berbeda dengan REST API yang menggunakan JSON, gRPC menggunakan Protocol Buffers sebagai format pertukaran data yang lebih efisien dan terstruktur.

Keunggulan gRPC:

Protobuf Definition

Berikut adalah definisi Protocol Buffer yang digunakan oleh LokaID:

syntax = "proto3";

package lokaid;

service Address {
  rpc GetStates(Empty) returns (StatesResponse);
  rpc GetState(StateRequest) returns (StateResponse);
  rpc GetCities(StateRequest) returns (CitiesResponse);
  rpc GetCity(CityRequest) returns (CityResponse);
  rpc GetDistricts(CityRequest) returns (DistrictsResponse);
  rpc GetDistrict(DistrictRequest) returns (DistrictResponse);
  rpc GetVillages(DistrictRequest) returns (VillagesResponse);
  rpc GetVillage(VillageRequest) returns (VillageResponse);
}

message Empty {}

message Region {
  string code = 1;
  string value = 2;
}

message StateRequest {
  string code = 1;
}

message CityRequest {
  string code = 1;
}

message DistrictRequest {
  string code = 1;
}

message VillageRequest {
  string code = 1;
}

message StatesResponse {
  int32 status = 1;
  string message = 2;
  repeated Region data = 3;
}

message StateResponse {
  int32 status = 1;
  string message = 2;
  Region data = 3;
}

message CitiesResponse {
  int32 status = 1;
  string message = 2;
  repeated Region data = 3;
}

message CityResponse {
  int32 status = 1;
  string message = 2;
  Region data = 3;
}

message DistrictsResponse {
  int32 status = 1;
  string message = 2;
  repeated Region data = 3;
}

message DistrictResponse {
  int32 status = 1;
  string message = 2;
  Region data = 3;
}

message VillagesResponse {
  int32 status = 1;
  string message = 2;
  repeated Region data = 3;
}

message VillageResponse {
  int32 status = 1;
  string message = 2;
  Region data = 3;
}

Menggunakan gRPC API

Untuk menggunakan gRPC API LokaID, ikuti langkah-langkah berikut:

Panduan Postman: Kami menyediakan panduan lengkap untuk menggunakan gRPC API dengan Postman. Buka Panduan Postman →

1. Setup Client

Pertama, simpan definisi Protocol Buffer di atas ke file lokaid.proto. Kemudian, generate kode client menggunakan protoc untuk bahasa pemrograman yang kamu gunakan.

2. Endpoint

Endpoint gRPC LokaID:

https://lokaid.gilangpratama.id/grpc/

3. Contoh Kode (Node.js)

const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');

// Load protobuf
const packageDefinition = protoLoader.loadSync('lokaid.proto', {
  keepCase: true,
  longs: String,
  enums: String,
  defaults: true,
  oneofs: true
});

const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);
const lokaid = protoDescriptor.lokaid;

// Membuat gRPC client
const client = new lokaid.Address(
  'lokaid.gilangpratama.id/grpc',
  grpc.credentials.createSsl()
);

// Mendapatkan daftar provinsi
client.getStates({}, (err, response) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(response.data);
});

// Mendapatkan daftar kota di provinsi tertentu
client.getCities({ code: '31' }, (err, response) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(response.data);
});

Metode Tersedia