Nic Acton
  • My Gitbook
  • My Favorite Things
    • Podcasts
    • Newsletters
  • Monthly Summaries
    • May 2019
    • June 2019
  • Cloud Computing
    • Cloud Concepts
    • AWS
      • Certified Solutions Architect
      • Well Architected Framework
        • Operational Excellence
        • Reliability
        • Performance Efficiency
        • Cost Optimization
        • Security
      • Analytics
        • Elasticsearch Service
        • Kinesis
        • Elastic MapReduce (EMR)
      • Compute Services
        • Elastic Beanstalk
        • Elastic Container Service (ECS)
      • Deployment
        • CloudFormation
      • Application Services
        • Key Management Service (KMS)
        • Simple Queue Service (SQS)
        • API Gateway
        • Simple Work Flow (SWF)
        • Amazon MQ
        • Simple Notification Service (SNS)
      • Simple Storage Service (S3)
        • Macie
      • Databases
        • RDS
        • DynamoDB
        • ElastiCache
        • Neptune
        • Redshift
      • Cloudfront
      • IAM
      • Monitoring
        • Trusted Advisor
        • Amazon Inspector
        • AWS Config
        • AWS Shield
        • CloudWatch
          • VPC Flow Logs
        • CloudTrail
        • Guard Duty
      • Route53
      • Serverless Architectures
        • Lambda
      • VPC
        • Highly Available & Fault Tolerant VPCs
        • Hybrid Environments
          • VPC Peering
          • Direct Connect
        • Cloud HSM
    • GCP
    • Azure
    • HashiCorp
    • Red Hat
      • RHEL
        • Basics
        • Grep & Regex
        • SSH
      • Ansible
    • Tutorials/Guides
      • Linux
        • Admin
  • Software Engineering
    • Machine Learning
      • Deep Learning
        • Tensorflow
      • Training and Loss
    • Programming
      • APIs
    • Security
    • Web Development
      • OSI 7 Layer Model
    • Tutorials/Guides
      • Apache Server
    • Virtualization
      • Virtual Machines
      • Containers
      • Serverless
  • Fitness
    • Nutrition
      • Diets
      • Macronutrients
      • Supplements
      • Miscellaneous
    • Strength Training
    • BodyBuilding
  • Miscellaneous
    • Technology Ethics
      • Education
    • Interesting Concepts
      • Libertarian Paternalism
Powered by GitBook
On this page

Was this helpful?

  1. Software Engineering
  2. Programming

APIs

APIs were a concept that eluded me for quite some time, I hope I can explain it very clearly! Most of this is from memory and experience and could be technically argued.

PreviousProgrammingNextSecurity

Last updated 6 years ago

Was this helpful?

What is an API?

API stands for Application Programming Interface. Let's break these terms up:

Application - A system that performs a function. You can define this/black-box it however you like for the most part. This application can be as complex and large as Amazon Web Services, which can perform functions like "launch an EC2 Virtual Machine" or "configure a VPC with these routing tables." This application can also be as tiny as:

def add(x,y):
    return x+y

Programming - I had my own definition in mind, but I was curious to look it up and dictionary.com it as "a plan of action to accomplish a specified end" which I actually like even better! You probably know programming as writing code in a text editor, but keep in mind programming comes from a history of when programs were created by . So for our purposes to keep this as general as possible, we will continue with a definition related to the ability for a user to write a "plan" to achieve a specified result.

Interface - If a computer had a bunch of cool functionality, but was just kept inside a box, how would you use any of those functions or tell it what to do? How would you interact with it? That's what interfaces are for! Depending on how you define your application, they can be a keyboard or a software method of interaction. We'll get into these later.

So to sum it up, an API is a way to plan an interaction with a system that performs a function (or many functions).

defines
physically punching holes in a piece of paper for a machine to interpret as logic