How to Design Better APIs

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

Our great sponsors
  • SonarQube - Static code analysis for 29 languages.
  • talent.io - Download talent.io’s Tech Salary Report
  • Scout APM - Truly a developer’s best friend
  • 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.

  • SonarQube

    Static code analysis for 29 languages.. Your projects are multi-language. So is SonarQube analysis. Find Bugs, Vulnerabilities, Security Hotspots, and Code Smells so you can release quality code every time. Get started analyzing your projects today for free.

  • twirp

    A simple RPC framework with protobuf service definitions

  • api-development-tools

    :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

  • talent.io

    Download talent.io’s Tech Salary Report. Median salaries, most in-demand technologies, state of the remote work... all you need to know your worth on the market by tech recruitment platform talent.io

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