Giriş
Bu doküman, üçüncü parti uygulamalarınızın Marksoft verilerine güvenli erişim sağlaması amacıyla geliştirilen Web Uygulama Programlama Arayüzü (API) hizmetinin kullanımını kapsamaktadır. Tüm istekler, HTTP protokolü aracılığıyla JSON formatında iletilir ve alınır. Güvenlik amacıyla, her istek kimlik doğrulaması gerektirir.
Temel URL
API'nin varsayılan temel adresi aşağıdaki gibidir:
http://localhost:8080
Kimlik Doğrulama
API, Basic Authentication yöntemi ile korunmaktadır. Korumalı endpoint'lere yapılan her istekte Authorization başlığının (header) gönderilmesi zorunludur.
Bu başlık, Basic ön eki ile birlikte Base64 formatında kodlanmış Marksoft Kullanıcı Adı ve Şifre bilgisini içermelidir.
Örnek:
Kullanıcı adı admin ve şifre 12345 ise, birleştirilmiş string admin:12345 olur. Bu string'in Base64 karşılığı YWRtaW46MTIzNDU= şeklindedir.
HTTP isteği başlığı (header) şöyle olmalıdır:
Authorization: Basic YWRtaW46MTIzNDU=
Endpoints
API iki ana endpoint sunmaktadır. Tüm endpoint'ler POST metodu ile çalışır.
POST/gettables
Sistemde sorgu yapılabilecek tüm tabloların, açıklamalarının ve sütun yapılarının listesini döndürür. Bu endpoint, hangi tabloların ve alanların sorgulanabileceğini keşfetmek için kullanılır.
İstek Başlıkları (Headers)
Authorization: Basic Auth bilgisi ZorunluMethod: POST
var settings = {
"url": "http://localhost:8080/gettables",
"method": "POST",
"timeout": 0,
"headers": {
"Authorization": "Basic YWRtaW46MTIzNDU="
},
};
$.ajax(settings).done(function (response) {
console.log(response);
});
Başarılı Yanıt
İşlem başarılı olduğunda, success değeri true olarak döner ve aşağıdaki yapıda bir JSON nesnesi elde edilir:
{
"success": true,
"tables": [
{
"table": "viewfirmalar",
"description": "Firmalar",
"columns": {
"id": "int",
"firmano": "varchar",
"firmaunvani": "varchar",
"...": "..."
}
},
...
{
"table": "viewlogs",
"description": "Sistem Kayıtları",
"columns": {
"id": "int",
"uniqueid": "varchar",
"...": "..."
}
}
]
}
Hatalı Yanıt
Hatalı gönderim yapıldığında, success değeri false olarak döner ve message parametresinde hatanın açıklaması yer alır:
{
"success": false,
"message": "Yetkisiz İşlem !"
}
POST/getdata
Belirtilen tablo üzerinde dinamik sorgular çalıştırmak için kullanılan ana endpoint'tir. Sorgu kriterleri, isteğin gövdesinde (body) JSON formatında gönderilir.
İstek Başlıkları (Headers)
Authorization: Basic Auth bilgisi ZorunluContent-Type: application/json ZorunluMethod: POST
var settings = {
"url": "http://localhost:8080/getdata",
"method": "POST",
"timeout": 0,
"headers": {
"Authorization": "Basic YWRtaW46MTIzNDU=",
"Content-Type": "application/json"
},
"data": JSON.stringify({
"table": "viewmarkalarim",
"select": ["*"],
"where": {
"conditions": [
{
"column": "haksahibiil",
"operator": "=",
"value": "ANKARA",
"logical": "AND"
},
{
"column": "haksahibiilce",
"operator": "=",
"value": "YENİMAHALLE",
"logical": "AND"
}
],
"combine": "AND"
},
"groupby": ["basvuruno"],
"orderBy": [{"column": "kayittarihi", "direction": "DESC"}],
"limit": 10
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
Başarılı Yanıt
İşlem başarılı olduğunda, success değeri true olarak döner ve aşağıdaki yapıda bir JSON nesnesi elde edilir:
{
"success": true,
"totalcount": 150,
"page": 1,
"pageSize": 2,
"data": [
{
"id": 1,
"basvuruno": "2024/071525",
"...": "..."
},
{
"id": 2,
"basvuruno": "2024/181274",
"...": "..."
}
...
]
}
Hatalı Yanıt
Hatalı gönderim yapıldığında, success değeri false olarak döner ve message parametresinde hatanın açıklaması yer alır:
{
"success": false,
"message": "Yetkisiz İşlem !"
}
Sorgu Yapısı (JSON)
/getdata endpoint'ine gönderilecek JSON gövdesi, SQL sorgusuna benzer bir yapıya sahiptir. Aşağıda bu yapının alanları ve açıklamaları verilmiştir.
| Alan Adı | Veri Tipi | Açıklama |
|---|---|---|
table |
string | Sorgulanacak tablonun adı. Zorunlu |
select |
array (string) | Getirilmesi istenen sütun adları. Belirtilmezse tüm sütunlar (*) seçilir. Örn: ["id", "firmaunvani"] |
where |
object | Filtreleme koşullarını içeren nesne. |
groupBy |
array (string) | Gruplama yapılacak sütun adları. |
orderBy |
array (object) | Sıralama yapılacak sütunları ve yönünü belirtir. Her nesne {"column": "sutun_adi", "direction": "ASC|DESC"} yapısındadır. |
limit |
integer | Getirilecek maksimum kayıt sayısı. Varsayılan değer 100'dür. |
offset |
integer | Sorgu sonuçlarında atlanacak kayıt sayısı. Sayfalama için kullanılır. |
where Nesnesinin Yapısı
where nesnesi, koşulları tanımlayan bir conditions dizisi içerir.
| Alan Adı | Veri Tipi | Açıklama |
|---|---|---|
column |
string | Koşulun uygulanacağı sütun adı. |
operator |
string | Karşılaştırma operatörü. Desteklenenler: =, !=, >, <, >=, <=, LIKE, IN. |
value |
string, integer, array | Karşılaştırma değeri. IN operatörü için bir dizi (array) olmalıdır. |
logical |
string | Bir sonraki koşul ile nasıl birleştirileceğini belirtir: AND veya OR. Varsayılan AND'dir. |
Sorgu yapısının C# ile yazılmış class nesnesi aşağıdaki şekildedir.
public class QueryRequest
{
public string table { get; set; }
public List<string>select { get; set; }
public Where where { get; set; }
public class Where
{
public List<Condition> conditions { get; set; }
public class Condition
{
public string column { get; set; }
public string @operator { get; set; }
public object value { get; set; }
public string logical { get; set; }
}
public string combine { get; set; }
}
public List<string> groupBy { get; set; }
public List<OrderBy> orderBy { get; set; }
public class OrderBy
{
public string column { get; set; }
public string direction { get; set; }
}
public int limit { get; set; }
public int offset { get; set; }
}
Örnek Sorgular
/getdata endpoint'i için hazırlanmış bazı örnek JSON sorguları aşağıdadır.
1. Tüm Firmaları Getirme (İlk 10 Kayıt)
viewfirmalar tablosundaki tüm sütunları seçer ve ilk 10 kaydı getirir.
{
"table": "viewfirmalar",
"limit": 10
}
2. Belirli Bir İldeki Firmaları Filtreleme
il sütunu "Ankara" olan firmaları, firma unvanına göre alfabetik olarak sıralayarak getirir.
{
"table": "viewfirmalar",
"select": ["id", "firmaunvani", "il", "ilce"],
"where": {
"conditions": [
{
"column": "il",
"operator": "=",
"value": "ANKARA"
}
]
},
"orderBy": [
{
"column": "firmaunvani",
"direction": "ASC"
}
]
}
3. Birden Fazla Koşul Kullanma (AND)
viewfirmalar tablosunda, belirli bir şehre (il='ANKARA') ve ilçeye (ilce='YENİMAHALLE') ait firmaları getirir.
{
"table": "viewfirmalar",
"where": {
"conditions": [
{
"column": "il",
"operator": "=",
"value": "ANKARA"
},
{
"column": "ilce",
"operator": "=",
"value": "YENİMAHALLE"
}
]
}
}
4. LIKE Operatörü ile Arama
Firma unvanı içinde "teknoloji" kelimesi geçen firmaları arar.
{
"table": "viewfirmalar",
"where": {
"conditions": [
{
"column": "firmaunvani",
"operator": "LIKE",
"value": "%teknoloji%"
}
]
}
}
5. IN Operatörü ile Çoklu Değer Filtreleme
id değeri 101, 105 veya 210 olan firmaları getirir.
{
"table": "viewfirmalar",
"where": {
"conditions": [
{
"column": "id",
"operator": "IN",
"value": [101, 105, 210]
}
]
}
}
Hata Mesajları
Hatalı gönderim yapıldığında, success değeri false olarak döner ve message parametresinde hatanın açıklaması yer alır.
Hata Açıklamaları
Yetkisiz İşlem !: Basic Auth geçersiz.Geçersiz Content-Type !: Content-Type başlığı application/json değil.Geçersiz Body !: Gönderilen JSON hatalı veya boş.Geçersiz JSON Verisi !: JSON istenilen formatta değil.Bu Tabloya Erişilemez !: İzin verilmeyen tablo sorgulandı.Geçersiz Sorgu !: Sunucu sorguyu işleyemedi.Bu işlem POST method gerektirir.: GET veya başka metod ile istek yapıldı.
© 2025 Marksoft Yazılım A.Ş