Dünyanın En İyi Sorgu Tabanlı Uçuş takibi ve Uçuş Durumu API'si
AeroAPI (önceden FlightXML), REST/JSON kullanan her tür uygulama için milyonlarca uçuş durumu girdisinden veri arayan geliştiriciler için özelleştirilmiş erişim sağlar.
AeroAPI (önceden FlightXML), REST/JSON kullanan her tür uygulama için milyonlarca uçuş durumu girdisinden veri arayan geliştiriciler için özelleştirilmiş erişim sağlar.
AeroAPI, yazılım geliştiricilerin FlightAware'in pek çok uçuş verisine erişmesini sağlayan basit, sorgu bazlı bir API'dır. Kullanıcılar güncel ve geçmiş verilere ulaşabilirler. AeroAPI bir RESTful API'ıdır ve doğru, uygulanabilir havacılık verisi sağlar. ForesightTM'ın eklenmesiyle müşteriler ABD'deki tahminî ETA'ların yarısından fazlasının çalışmasını sağlayan verilere erişim sağlarlar.
import requests
apiKey = input("API Key: ")
apiUrl = "https://aeroapi.flightaware.com/aeroapi/"
airport = 'KSFO'
payload = {'max_pages': 2}
auth_header = {'x-apikey':apiKey}
response = requests.get(apiUrl + f"airports/{airport}/flights",
params=payload, headers=auth_header)
if response.status_code == 200:
print(response.json())
else:
print("Error executing request")
String YOUR_API_KEY = "API_KEY_HERE";
String apiUrl = "https://aeroapi.flightaware.com/aeroapi/";
String airport = "KSFO";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(apiUrl + "airports/" + airport + "/flights"))
.headers("x-apikey", YOUR_API_KEY)
.build();
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("responseBody: " + response.body());
}
<?php
$apiKey = "YOUR_API_KEY";
$fxmlUrl = "https://aeroapi.flightaware.com/aeroapi/";
$ident = 'SWA45';
$queryParams = array(
'max_pages' => 2
);
$url = $fxmlUrl . 'flights/' . $ident . '?' . http_build_query($queryParams);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('x-apikey: ' . $apiKey));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
if ($result = curl_exec($ch)) {
curl_close($ch);
echo $result;
}
?>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace AeroApi4Sample
{
public class FlightsResult
{
public List<Flight> Flights { get; set; }
}
public class Flight
{
public string Ident { get; set; }
[JsonPropertyName("fa_flight_id")]
public string FaFlightId { get; set; }
[JsonPropertyName("scheduled_out")]
public DateTime ScheduledOut { get; set; }
[JsonPropertyName("actual_out")]
public DateTime? ActualOut { get; set; }
}
public class Program
{
static void Main( string[] args )
{
Console.Write( "API Key: " );
var strApiKey = Console.ReadLine();
Console.Write( "Ident to look up (e.g., UAL47): " );
var strIdentToLookUp = Console.ReadLine();
var flights = GetFlights( strApiKey, strIdentToLookUp ).Result;
if( flights == null )
{
return;
}
var nextFlightToDepart = flights.Where(
f => f.ActualOut == null
).OrderBy( f => f.ScheduledOut ).First();
Console.WriteLine(
string.Format(
"Next departure of {0} is {1} at {2}",
strIdentToLookUp,
nextFlightToDepart.FaFlightId,
nextFlightToDepart.ScheduledOut
)
);
}
private static async Task<List<Flight>> GetFlights( string strApiKey, string strIdent )
{
using( var client = new HttpClient() )
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue( "application/json" )
);
client.DefaultRequestHeaders.Add(
"x-apikey",
strApiKey
);
FlightsResult flightResult = null;
var response = await client.GetAsync(
"https://aeroapi.flightaware.com/aeroapi/flights/" + strIdent
);
var contentStream = await response.Content.ReadAsStreamAsync();
if( response.IsSuccessStatusCode )
{
flightResult = await JsonSerializer.DeserializeAsync<FlightsResult>(
contentStream,
new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true
}
);
}
else
{
Console.Error.WriteLine( "API call failed: " + response );
return null;
}
return flightResult.Flights;
}
}
}
}
AeroAPI Python, Ruby, Java, .NET ve diğer dillerle de kullanılabilir.
Tek bir Sorgu, yapılan arama türüne ve sunulan girdi parametresine bağlı olarak çok fazla sonuç çıkarabilir. Fiyatlandırma amaçları gereğince, 15 sonuç/kayıt şeklinde bir 'sonuç seti' belirlenmiştir. Fiyatlandırma sonuç seti başına gerçekleşir.
Note: The max_pages input parameter can be used to limit/control how many result sets will be returned, with one page being equivalent to one result set.
All Premium and Standard tier accounts are eligible for volume discounting. The first $1000 of usage per month is always billed at list price, followed by each incremental level of usage being discounted at a more generous level. For monthly usage above $64,000 the discount is set at 94% off, which will enable you to continue to grow your applications and take full advantage of new features with minimal variance in total monthly cost.
Please contact FlightAware for more information regarding additional discounting available with 3 or 4 year term commitments.
Genel olarak her sorgu başına ücretlendirilirsiniz. Ne var ki, birden çok sayfalık sonuç getiren sorgular için (15 sonuca kadar olan setler şeklinde tanımlanır), gelen sayfaların toplam sayısı karşılığında ücretlendirilirsiniz (sorgu başına ücret çarpı gelen sayfa sayısı şeklinde hesaplanır). API'nin bir sorgu için getirdiği maksimum sayfa sayısını kontrol edebilirsiniz. Lütfen "max_pages" parametresini nasıl belirleyeceğinize dair bilgi almak için API belgelerine göz atın.
Mevcut müşteriler biriken masrafları görmek için AeroAPI portalını ziyaret edebilirler.
FlightAware'in uçuş durumu, uçui takibi ve havacılık verileri API'sine REST aracılığıyla erişilebilir ve API'ye de aynı programlama diliyle erişilebilir.
Genel sorulara cevaplar bulmak için lütfen SSS bölümümüzü ziyaret edin veya daha derinlemesine bilgiler için tartışma forumumuza göz atın.