Top 10 NASA API Solutions for Developers

Jennie Lee
4 min readApr 10, 2024

--

Looking for a Postman alternative?

Try APIDog, the Most Customizable Postman Alternative, where you can connect to thousands of APIs right now!

Introduction to the Perseverance Rover and NASA API

The Perseverance rover is NASA’s most advanced Mars rover to date and it has a primary mission to search for signs of ancient microbial life on Mars. It also aims to collect rock and soil samples for potential return to Earth in the future. Perseverance is equipped with a variety of scientific instruments, including a high-resolution camera system, to capture detailed images of Mars’ surface.

To make these images accessible to the public, NASA has provided a public API that allows developers to access the photos taken by Perseverance. This API enables developers to build applications and tools that utilize the rich visual data gathered by the rover.

Building a Web App with Anvil to Fetch and Display Photos

Anvil is a powerful platform for building web applications using Python. It simplifies the process of web development by providing a drag-and-drop designer and built-in database integration. The author of this article used Anvil to create a web app that fetches and displays the photos taken by the Perseverance rover.

Using the NASA API to Retrieve the Latest Photos from Perseverance

To retrieve the latest photos from Perseverance using the NASA API, you need to make an HTTP request to the endpoint provided by NASA. The URL for accessing the photos is https://api.nasa.gov/mars-photos/api/v1/rovers/perseverance/latest_photos.

When you make a request to the API, it will return a JSON response containing an array of photo objects. Each photo object contains information about the photo, such as the camera used to capture it, the date it was taken, and a URL to download the image.

{
"photos": [
{
"id": 20210202172556,
"sol": 1,
"camera": {
"id": 26,
"name": "Mast",
"rover_id": 9,
"full_name": "Mast Camera"
},
"img_src": "https://mars.nasa.gov/msl-raw-images/proj/msl/redops/od...g2P1214L4I1.JPG",
"earth_date": "2021-02-02",
"rover": {
"id": 9,
"name": "Perseverance",
"landing_date": "2021-02-18",
"launch_date": "2020-07-30",
"status": "active"
}
},
// more photo objects...
]
}

By parsing this JSON response, you can extract the necessary information to display the photos in your app.

Displaying Photos in a Web App with Anvil

Anvil provides a drag-and-drop designer that allows you to easily create the user interface for your app. You can drag and drop components onto the designer canvas and customize their properties.

To fetch and display a random photo from the NASA API using Anvil, you can use the following code snippet:

import anvil.server

anvil.server.connect('YOUR_ANVIL_APP_KEY')

@anvil.server.callable
def fetch_random_photo():
# Make an HTTP request to the NASA API
response = anvil.http.request("https://api.nasa.gov/mars-photos/api/v1/rovers/perseverance/latest_photos")

# Parse the JSON response
photos = response['photos']

# Select a random photo
import random
random_photo = random.choice(photos)

return random_photo['img_src']

In your Anvil app, you can create a button component that calls the fetch_random_photo function when clicked. You can then display the fetched photo in an image component.

Sending Automatic Emails with the Latest Photos

Anvil’s Scheduled Tasks feature allows you to run code at specified intervals. You can use this feature to regularly check for new photos from the Perseverance rover.

To send the latest photos as email attachments using Anvil’s Email Service, you can utilize the following code snippet:

import anvil.server

anvil.server.connect('YOUR_ANVIL_APP_KEY')

@anvil.server.scheduled(delay_minutes=60)
def send_latest_photos():
# Make an HTTP request to the NASA API
response = anvil.http.request("https://api.nasa.gov/mars-photos/api/v1/rovers/perseverance/latest_photos")

# Parse the JSON response
photos = response['photos']

# Select the latest photo
latest_photo = photos[0]

# Get the email addresses from the database
email_addresses = app_tables.emails.search()

# Send an email with the latest photo to each address
for email_address in email_addresses:
anvil.email.send(
to=email_address['email'],
subject="Latest Photo from Perseverance Rover",
text="Check out the latest photo from the Perseverance rover:",
attachments=[latest_photo['img_src']]
)

In your Anvil app, you can create a database table to store email addresses. You can then add a form component to collect email addresses from users and store them in the database. The send_latest_photos function can be scheduled to run every hour, checking for new photos and sending them as attachments to the email addresses in the database.

Further Exploration and Conclusion

To explore the code further and experiment with Anvil, you can access the source code for the app built using the NASA API and Anvil by visiting link_to_source_code.

The NASA API provides developers with a wealth of information and resources to build applications that explore and utilize the data gathered by the Perseverance rover. With Anvil’s Python-based platform, building web apps that fetch, display, and even send the latest photos from Perseverance becomes an achievable task. Whether you are an experienced developer or just starting out, the ease of use and power of both the NASA API and Anvil can help you create impressive applications that leverage the vast amount of scientific data collected by NASA’s missions.

Looking for a Postman alternative?

Try APIDog, the Most Customizable Postman Alternative, where you can connect to thousands of APIs right now!

--

--

Jennie Lee
Jennie Lee

Written by Jennie Lee

Software Testing Blogger, #API Testing

No responses yet