ewittern | 3 years ago | on: Announcing GraphQL Rate Limiting: Protect Your GraphQL API from Bots and Hackers
ewittern's comments
ewittern | 3 years ago | on: GraphQL kinda sucks
I was later involved in productising said research into an API gateway (called DataPower) offered by IBM. We implemented our GraphQL static analysis in a quite flexible and performant way (all of GraphQL's query validation and the static analysis are implemented in C++). The required configuration for the static analysis can be provided using GraphQL schema directives (cf. https://ibm.github.io/graphql-specs/cost-spec.html). Unfortunately, DataPower is quite inaccessible to the common developer.
I find that persisted queries are a very interesting approach to also solve this issue. They still grant developers the full flexibility to define queries during development, but then require providers to validate and vet queries only once before persisting them (instead of validating and vetting queries on every request). This has huge benefits for runtime performance, of course.
ewittern | 4 years ago | on: Skip: A programming language to skip the things you have already computed
ewittern | 7 years ago | on: Principled GraphQL
I wonder about the other proposal for demand control, namely that untrusted users "should only send queries that have been preregistered by the authenticated developer of the app". To me, that seems to somewhat negate a great advantage of GraphQL, namely giving clients more flexibility in deciding (on the fly) what data to fetch/mutate.
ewittern | 7 years ago | on: A New Approach to GraphQL API Management
[1] https://github.com/pa-bru/graphql-cost-analysis [2] https://github.com/slicknode/graphql-query-complexity
ewittern | 9 years ago | on: API Harmony Hits the Next Major Version
API Harmony is a research prototype we develop here at IBM Research. Using it, we explore things like mining API specifications, static code analysis of web API requests, or API recommendation. Some of this research shows directly in API Harmony (with sometimes good, sometimes fair, and sometimes rather poor results, admittedly), and others are disseminated as more fundamental research results (like our static analysis of web API requests, which made it to the International Conference on Software Engineering this year).
APIful.io is a blog about our work, within API Harmony and beyond. We use it to expose our results and (hopefully) foster discussions.
ewittern | 9 years ago | on: API Discovery: Can we do better?
One of our goals is to mine information about APIs, rather than relying on user input (hence the "catalog"). We still have a long way to go, though. In Web API land, many things follow a power-law distribution: for a few well-known APIs, a lot of information can be found (https://apiharmony-open.mybluemix.net/apis/instagram). For many other APIs, information is sparse and hard to mine.
Adding Schema.org (or similar) annotations would help. But it may be as hard to convince providers to do this, as it is to convince them to write OpenAPI specifications (or similar).
ewittern | 9 years ago | on: Inferno: A fast, React-like JavaScript library for building UIs
ewittern | 9 years ago | on: Inferno: A fast, React-like JavaScript library for building UIs
ewittern | 9 years ago | on: Hassle-free TODO application development
ewittern | 9 years ago | on: Hassle-free TODO application development
ewittern | 9 years ago | on: Hassle-free TODO application development
ewittern | 10 years ago | on: Why isn't your API specification public?
ewittern | 10 years ago | on: Why isn't your API specification public?
ewittern | 10 years ago | on: Why isn't your API specification public?
ewittern | 10 years ago | on: Why isn't your API specification public?
With regards to the bugs, were they a result of the implementation and the specification getting out of sync? Would automatic means for creating / maintaining specs be able to help here?
ewittern | 10 years ago | on: Why isn't your API specification public?
I am excited to learn about the details for complexity-based rate limits, as there are quite a few design considerations involved. For example, how to configure which (numeric) arguments in a GraphQL query actually impact complexity. The example in the blogpost relies on `first`, which seems to be derived from Relay Connections. But implementations might differ and user other arguments.
We did research in this area (cf. https://arxiv.org/pdf/2009.05632.pdf) and proposed a specification to embed required configuration in the GraphQL schema (cf. https://ibm.github.io/graphql-specs/cost-spec.html).