Jump to content

User:DKinzler (WMF)/API Guidelines: Difference between revisions

From mediawiki.org
Content deleted Content added
google
google links
Line 28: Line 28:
* [https://github.com/microsoft/api-guidelines/ Micosoft API Guidelines], [https://github.com/microsoft/api-guidelines/blob/vNext/Guidelines.md#122-when-to-version Microsoft API Versioning]
* [https://github.com/microsoft/api-guidelines/ Micosoft API Guidelines], [https://github.com/microsoft/api-guidelines/blob/vNext/Guidelines.md#122-when-to-version Microsoft API Versioning]
* [https://cloud.google.com/apis/design/resources?hl=en Google API Guidelines] (these seem pretty good!)
* [https://cloud.google.com/apis/design/resources?hl=en Google API Guidelines] (these seem pretty good!)
* '''Maturity levels''': https://blog.restcase.com/4-maturity-levels-of-rest-api-design/
* '''Maturity ''' https://blog.restcase.com/4-maturity-levels-of-rest-api-design/
* List of other people's API Guidelines: https://github.com/masteringapi/rest-api-standards
* List of other people's API Guidelines: https://github.com/masteringapi/rest-api-standards


Line 61: Line 61:


== Bits & Pieces ==
== Bits & Pieces ==
Note to self: looked at: Adidas, Maturity, Atlassian, Whitehouse
Note to self: looked at: Adidas, Maturity, Atlassian, Whitehouse


Typical Structure & Aspects
Typical Structure & Aspects
Line 69: Line 69:
* HTTP binding
* HTTP binding
** use of verbs, HATEOAS, idempotence (put vs post vs patch)
** use of verbs, HATEOAS, idempotence (put vs post vs patch)
*** see https://cloud.google.com/apis/design/standard_methods?hl=en
*** see [https://cloud.google.com/apis/design/custom_methods?hl=en google's idea for custom verbs]
** use of error codes, body of error responses
** use of error codes, body of error responses
** content types & negotiation
** content types & negotiation
Line 77: Line 79:
** guidance on urls vs header vs query param
** guidance on urls vs header vs query param
** resources vs entities
** resources vs entities
** etags, see https://cloud.google.com/apis/design/design_patterns?hl=en#etags
* payload data
* payload data
** serialization (JSON)
** serialization (JSON)
** shared data model
** shared data model
** data types (date format, language codes, etc)
** data types (date format, language codes, etc)
** field names (rel, ref, etc)
** field names (rel, ref, etc)
** schemas
** schemas
** pagination
** pagination
** response for long running operations?
** standard query params: localization, variants, embedding/expansion
** standard query params: localization, variants, embedding/expansion
** batch operations and collections (put vs post)
** batch operations and collections (put vs post)
Line 89: Line 93:
** domains and bounded contexts, separation of concerns
** domains and bounded contexts, separation of concerns
** no data in keys (really? maps are neat...)
** no data in keys (really? maps are neat...)
** errors, compare https://cloud.google.com/apis/design/errors?hl=en
* Evolution
* Evolution
** Versioning
** Versioning
Line 94: Line 99:
** content negotiation
** content negotiation
** deprecation
** deprecation
** compatibility, see https://cloud.google.com/apis/design/compatibility?hl=en
* URL structure
* URL structure
** characters & encoding
** characters & encoding
** resources & collections (sub-collections, formats, nested resources, etc)
** resources & collections (sub-collections, formats, nested resources, etc)
** use American English nouns ([https://stackoverflow.com/questions/54057388/rest-api-resource-naming-conventions-user-or-users-pluralisation singlular or plural]?) (kebab-case or CamelCase?)
** use American English nouns
** searching vs. listing
** searching vs. listing
** formats / file extension suffix
** formats / file extension suffix

Revision as of 23:11, 18 March 2023

For Maintainers

For Clients


Bill's Links

Search / WDQS

Bits & Pieces

Note to self: looked at: Adidas, Maturity, Atlassian, Whitehouse, Google

Typical Structure & Aspects