Skip to content

Latest commit

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Mission Control Simulation API

The Mission Control Simulation API is a fun practice API designed for students and developers learning how to work with APIs. It provides a set of endpoints for simulation of exploring space missions, agencies, spacecraft, and crews.

Instead of using the same old boring APIs, this project gives you something cool and space-themed to experiment with while learning concepts like HTTP requests, JSON parsing, and data modeling.


Base URLs

API Docs

https://missioncontrol-e832.onrender.com/scalar/v1

v2 — Simplified Missions model with direct data

https://missioncontrol-e832.onrender.com/api/v2/Missions

v1 — Missions model including relationships and reference tables

https://missioncontrol-e832.onrender.com/api/v1/Missions


Basic API Call (Minimal Example)

This example shows the easiest way to call the Mission Control API and display data with no additional validation.

usingSystem;usingSystem.Net.Http.Json;usingSystem.Text.Json;namespaceTEST{classProgram{publicstaticasyncTaskMain(string[]args){Console.WriteLine(DateTime.Today.ToString("D"));//Base URLstringurl="https://missioncontrol-e832.onrender.com/api/v2/Missions";// Base URL with filters(***Currently only filter by 'name' & 'agency')stringurlFilter="https://missioncontrol-e832.onrender.com/api/v2/Missions?filterOn=agency&filterQuery=nasa";// Init HTTP client to send and receive web requestsHttpClientclient=newHttpClient();// Deserialize JSON into a list of MissionMain objectsvarmission=awaitclient.GetFromJsonAsync<List<Mission>>(urlFilter);// loop through each recordforeach(variteminmission){Console.WriteLine($"{item.missionId} - {item.name} - {item.agency}");}}//Class Structure for jsonpublicclassMission{publicGuidmissionId{get;set;}publicstringname{get;set;}publicstringagency{get;set;}publicDateTimelaunchDate{get;set;}}}}

Enhanced API Call with Error Handling and Validation

This version follows best practices—checking the response status code, using try/catch, and deserializing with defined JSON options for more reliable error handling and improved clarity.

usingSystem;usingSystem.Collections;usingSystem.Text.Json;namespaceAPI{classProgram{publicstaticasyncTaskMain(string[]args){Console.WriteLine(DateTime.Today.ToString("D"));Console.WriteLine($"\nMission Simulation Control API\n");stringurl="https://missioncontrol-e832.onrender.com/api/v1/Missions";// Init HTTP client to send and receive web requestsHttpClientclient=newHttpClient();// Set JSON options to ignore class name sensitivityvaroptions=newJsonSerializerOptions(){PropertyNameCaseInsensitive=true};try{// Send GET request to the APIvarresponse=awaitclient.GetAsync(url);// Check if the response was successful: status code 200if(response.IsSuccessStatusCode){// Grabs the raw JSON from the response bodyvarjson=awaitresponse.Content.ReadAsStringAsync();// Deserialize JSON into a list of MissionMain objectsvarmissionJson=JsonSerializer.Deserialize<List<MissionMain>>(json);Console.WriteLine($"{"ID(GUID)",-42}{"MissionName",-42}{"Agency",-25} ");Console.WriteLine(newstring('*',100));// Loop through each mission and print its details in formatted columnsforeach(variteminmissionJson){Console.WriteLine($"{item.missionId,-42}{item.name,-42}{item.agency,-25}");}}}catch(Exceptionex){Console.WriteLine($"Error message: {ex.Message}");throw;}}//FULL Class Structure for json for both v1 and v2 mission api endpointspublicclassCrew{publicstringcrewId{get;set;}publicstringastronautName{get;set;}publicstringnationality{get;set;}}publicclassMissionType{publicstringmissionTypeId{get;set;}publicstringname{get;set;}}publicclassMissionMain{publicstringmissionId{get;set;}publicstringname{get;set;}publicstringagency{get;set;}publicDateTimelaunchDate{get;set;}publicStatusstatus{get;set;}publicMissionTypemissionType{get;set;}publicSpacecraftspacecraft{get;set;}publicCrewcrew{get;set;}}publicclassSpacecraft{publicstringspacecraftId{get;set;}publicstringname{get;set;}publicstringtype{get;set;}publicstringmanufacturer{get;set;}}publicclassStatus{publicstringstatusId{get;set;}publicstringname{get;set;}}}}

About

The Mission Control Simulation API is a fun practice API designed for students and developers learning how to work with APIs.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors