Allows code (and people) to interact with other people applications. They define interactions points (endpoints) within the code, where data is retrieved (GET) or inserted (POST). Each endpoint is accessed using a URL or URI through HTTP.

REST principles

Representational state transfer.

These principles describe the best practives for building APIs.

Some of the main points are:

  • decoupled
    • not dependent of e.g., a specific browser
  • stateless
    • each interaction is self contained
    • although sometimes this is not used
      • e.g., authenticated “sessions”
  • uniform interface.
    • codifies principle of using HTTP methods on URLs
    • internal representation of data id hidden
    • interactions are based on resources

REST principles were Co-developed with the web

Java REST APIs

java servelts are code blocks that handle requests. java.servlet.http library

framworks like Spring support Java API development

  • wraps an aplication server around you data classes
  • can persist your data in a database
  • also provides servers that can host API access to your data

Web technologies

  • resources on the web are identified using URLs
  • HTTP is the network protocol for data transfer in the web
  • HTTP describes ‘methods’ to apply to URLs
    • GET read a resource identified using a URL
    • PUT writes to a resource identified using a URL

Cloud computing

Uses mircoservices

apps built from intercommunicating microservice components/ each component can scale independently.components are loosely coupled.

Bulding an API

Use a library/framework with:

  • human readable documentation of functions
  • ability to manually interact

Some APIs will provide tools to interactively build snippets which can be copy pasted

Maintaining API

Similar to maintenance of code libraries

  • need to consider abstractions
  • need to evolve
  • future proof as much as possible
  • avoid complete rewrites
  • use versioning

Other stuff

Flask

small python web sever

code and data

APIs define interaction points within code. (Similar to visibilty of methods).

  • also force a barrier between devs code

need developer to understand data model

  • this may appear explicitly in API calls
  • may be that API calls manipulate unseen data
    • need ndevs to be comfortable with you mental model

Use of libraries share many of these points

Overview

Allow code to interact with others applicatioins.

can be used by people, not only code.

API differ from libraries because they deal with the interactions between applications at runtime.

APIs work accross different “distances” of interaction. e.g., intergrating software components within one server vs across the internet

web technologies have positively impacteed api by

  • simplfy development - provide base of technologies that can be used to gain access to data in a structure way
  • normalised tools to using APIs