How to Design Better APIs

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • WHATWG HTML Standard

    HTML Standard

  • I don’t know what OP thinks is the reason, but the actual reason is CORS.

    Web Devs (such as me) have asked for e.g. DELETE as an acceptable formmethod (e.g. https://github.com/whatwg/html/issues/3577) however WHATWG always pushes back citing security concerns such as CORS.

    I suspect this is not what OP had in mind since it is trivial to send a DELETE request with a simple JavaScript:

        

  • jsonrpc-ts

    Strongly 💪 Typed Fast and lightweight JSON RPC 2.0 Client for Nodejs

  • Active use is really irrelevant if you only plan on using it inside a company, because you can implement a client and server within 30 mins to an hour, no external tools needed. The spec is clear and readable. It's excellent. We use it with a TypeScript codebase and just share the interfaces for the services in a monorepo.

    If you want a more advanced implementation with type inference for Typescript you can use this: https://github.com/shekohex/jsonrpc-ts

    I'd still recommend implementing your own, my own implementation is based off the one above.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • twirp

    A simple RPC framework with protobuf service definitions

  • awesome-api-devtools

    :books: A collection of useful resources for building RESTful HTTP+JSON APIs.

  • For those in Security Theatre of HTTP APIs, I found this also useful:

    https://github.com/yosriady/api-development-tools

  • python-rapidjson

    Python wrapper around rapidjson

  • > * Human readable

    Computers are the main consumers of APIs, and ISO 8601 is far from machine-readable.

    For example, in Elixir, DateTime.from_iso8601/1 won't recognize "2022-03-12T07:36:08" even though it's valid. I had to rewrite a chunk of Python's radidjson wrapper to 1-9 digit fractional seconds (1).

    I'm willing to bet 99% of ISO8601 will fail to handle all aspects of the spec. So when you say "ISO8601" what you're really saying is "our [probably undocumented, and possibly different depending on what system you're hitting] version of the ISO-86001 spec."

    (1) https://github.com/python-rapidjson/python-rapidjson/pull/13...

  • indie-rpc

    A simple RPC framework for Kotlin services

  • >Sometimes, I feel that we ought to have a simple protocol, on top of HTTP, to simply do remote procedure calls and throw out all this HTTP verbs crap. Every request is a http POST, with or without any body and the data transfer is in binary. So that objects can be passed back and forth between client and server.

    https://github.com/asad-awadia/indie-rpc

  • webrpc

    webrpc is a schema-driven approach to writing backend services for modern Web apps and networks

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts