Create API design before creating database queries
Adding meta infromation. Title, version (major, minor, patch), description, audience (218)
Security add: access-mode read, write (225)
Define: new Claim("access_mode", AccessMode.Admin.ToString()),
Add:
builder.Services.AddAuthorization(options => {
options.AddPolicy("AdminOnly", policy => policy.RequireClaim("access_mode", AccessMode.Admin.ToString()));
Check: app.MapGet("/admin/stats", () => "ok")
.RequireAuthorization("AdminOnly");
Standard format date time (169)
UTC without lcal offset 2015-05-28T14:07:17Z
Plural resource name (134)
Main sub resources (146)
/customers
/customers/{id}
/customers/{id}/preferences
/customers/{id}/addresses
/customers/{id}/addresses/{addr}
/addresses
/addresses/{addr}
Query parameters (137)
q: parameter
sort: + asc or - desc -id
Snake ase property names (118)
customer_number, sales_order_number
Versioning (114 - 115)
URI path: http://www.example.com/api/v1/products
Query parameters: http://www.example.com/api/products?version=1
Custom Headers: http://localhost:8080/api/products Headers: X-API-VERSION=1
Content Negotiation: http://localhost:8080/api/products Headers: Accept=application/vnd.javaguides-v1+json
Before shut down Deprecation: <timestamp>
Provide uniqie event identifiers (211)
Status Codes (150)
Success
200 Ok
201 Created
202 Accepted
204 No content
207 Multi-Status bulk request
Error codes
400 Bad request
401 Unauthorized
404 Not found
409 Conflict
429 Too many request
Return Retry-After, X-RateLimit headers
Identify participants
Identify Activities
Break Into Steps
Create Api Definitions
Validate API