-
Notifications
You must be signed in to change notification settings - Fork 5
Intro to REST
REST comes from REpresentational State Transfer. It is a way of encoding state in the url/uri.
- Status codes
- idempotence - https://www.restapitutorial.com/lessons/idempotency.html
- api design topics - https://github.com/RestCheatSheet/api-cheat-sheet#api-design-cheat-sheet
- https://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
- https://softwareengineering.stackexchange.com/a/273359/5218
⚠️ http codes should not represent business logic- It is wrong to mix HTTP status codes and REST status codes.
- references
-
server - Should I use HTTP status codes to describe application level events - Software Engineering Stack Exchange
Very insightful. The strongest argument here is the (impedance) mismatch between HTTP status codes and your app's return values. This can become a nightmare on the long run. Further, I highly support the separation of concerns between the transport (HTTP) and the payload (app data). If you mistype the URL of a service endpoint, you get a 404. If you ask the service for a non-existent item, you get an app-specific message (maybe with additional information you can use to solve the problem). CONS:
-
- You must make your request/response logic a subset of the HTTP rules; or
-
- You must reuse certain rules, and then the separation of concerns tends to get fuzzy.
- The other benefit of this approach, which is worth mentioning, is that applications should, generally speaking, not be dependent upon an underlying transport protocol (from a logical point of view).
-
-
rest - Http Status Code When Downstream Validation Fails - Software Engineering Stack Exchange
HTTP Status Codes are only designed to tell you about the status of your HTTP transmissions. They have no notion of "business rules." Stick to 200 and 400. When you get a 400, you can retry the request or fail it. When you get a 200, your message is valid; you can then check the returned metadata for status information from your application (i.e. whether the payment succeeded or not).
- http code rest vs business - Google Search
- rest - Should HTTP status codes be used to represent business logic errors on a server? - Software Engineering Stack Exchange
- rest - Why would HTTP response code be used in RESTful service to indicate business related logic? - Stack Overflow
- REST – Why HTTP Status Codes Are Important | FileCatalyst
- REST HTTP codes for business logic errors - Stack Overflow
- rest - Http status for error response because of business exception. Syntax is correct and request makes sense - Stack Overflow
- http - Which status code should I use for failed validations or invalid duplicates? - Stack Overflow
- Designing a REST API: setting business logic error codes in http headers or within the response payload - Software Engineering Stack Exchange
- What http error to return in case of validation and business rules in a domain driven design api - Software Engineering Stack Exchange
- rest architecture style - https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm
-
I use HTTP 200 everywhere because Facebook says it's the best practice now #graphql
-
server - Should I use HTTP status codes to describe application level events - Software Engineering Stack Exchange
- vscode plugin
-
https://marketplace.visualstudio.com/items?itemName=humao.rest-client
- simple http files similar to get/post requests but also with variables
- http files are sources shared with the team in the project
-
https://marketplace.visualstudio.com/items?itemName=humao.rest-client
- swagger
- JSON path evaluator online
- postman - https://www.getpostman.com/
- vendor lock-in, proprietary format, needs cloud account, forces team to make accounts, in the end you must pay for simple things
- SoapUI - old style, desktop app
- SoapUI
- Swagger?
- hateoas - https://restfulapi.net/hateoas/
-
- See more about API and ABI here: https://stackoverflow.com/questions/2171177/what-is-an-application-binary-interface-abi/2497903#2497903
- Home
- Advices
- Development Algorithm
- Who's who
- Software Books
- Career, salary, salariu, brut, net, Levels
-
Tools
- Health
- Physical Tools
- Environment Tools
- File Tools
- Source Tools
- Information Tools
- Collaboration Tools
- Infrastructure Tools
- Language Tools
-
Concepts as Tools spec maturity
- Classes of Objects, Development Algorithm/mantra/practices
- Streaming Tools
- Process Tools psychology, analytical paralysis
- Special
- fiddler kotlin,javascript,scala
- translator scala->kotlin, java->kotlin
- Guides
- Asking for Help
- Aspects
- Security
- Server & Networking load balancing,
-
Principles & Guidelines
- PLS - Principle of Least Surprise (aka no puzzlers)
- SRP - Single Responsibility Principle
- KISS - Keep It Simple
- YAGNI - You aint gona need it
- DRY - Dont Repeat Yourself
- Fail Fast
- OCP - Open Closed
- POE - Premature Optimization is Evil
- LSP - Liskov Substitution Principle
- DIP - Dependency Inversion Principle / Inversion of Control
- Hollywood Principle - Don't call us We call you
- Tell Don't Ask
- Event sourcing
- NIHS - Not invented here syndrome
- Patterns - idioms, best practices, code smells
-
Intro to Problems - common problems: cache, logging, config, representing date, time, money
- Intro to Libraries - reactive, reactor, commons, collections, apache, guava, logging, config, time, test, junit, vavr, immutable, lombok, mapping, mapstruct, time, joda, cache, Guava, Caffeine, and cache2k
- Intro to DateTime
- Intro to Logging
- Intro to Concurrency - thread, parallelism
- Intro to I18N - internationalization, encoding, unicode, big indian, little indian, ascii, utf, utf8, utf16, formatting, parsing, transliteration, charset, localization, time, timezone, zone id, zone offset, GMT
- Intro to Numbers - rounding, ceil, floor, base, integer, decimal, precision, mantis, exponent, significant, statistics
- Java Idioms
- Concepts
- Code Changes refactor, format, eol, bugfix, newfeature
- Convention Over Configuration
- Continuous Integration
- Continuous Delivery
- Code License
- Fluent Interface
- Semantic Versioning
- Take It Offline
- Flow
- Languages
- Hardening
- Smells
-
Intros
- Intro to Paradigms Object Oriented, Functional, Procedural, Asynchronous
- Intro to Logic
- Intro to Product UX, UI, business, technical, backend, frontend
- Intro to Roles
- Intro to Decision Levels : business, financials, domain, product, architecture, high level design, low level design, coding, debugging, quality, roles, stakeholders
- Intro to Steps
- Intro to Software Architecture
- Intro to Software Design
- Intro to UML state machine diagram, class diagram, sequence diagram
- Intro to Graphical Design
- Intro to Performance bigO, algorithm complexity
- Intro to Agile
- Intro to Scripting
- Intro to Shell execution, environment, registry, powershell, cmd, cmder, linux, bash, ash, csh, zsh, ksh
- Intro to Wiki
-
Intro to Building
- Intro to DevMachine
- Intro to Git
- Intro to Maven
- Intro to Docker
- Intro to Hosting Deploy, nameserver, hostname, registrar, ssl, ddns, dns, naked domain, wildcard domain, email, smtp, pop3, imap, DKIM, SPF, spam
-
Intro to Landscapes Language Environments, Web Landscape
- Intro to JVM Landscape
-
Intro to Javascript Landscape
- Intro to Javascript
- Intro to Typescript binding, implicit, explicit, default (global), callsite, lambda, callback, function, promise, async await
- Intro to Node javascript, npm, yarn
- Intro to DotNet Landscape C# csharp
- Intro to Golang
- Intro to Ruby
- Intro to Python
- Coding Style
- Phases
-
Intro to Quality - QA, Quality Assurance, code quality, bugs, bug levels, metabugs
- Intro to Tests
-
Test Driven Development TDD, mantra
- Domain-and-Test-Driven-Design Advanced topics
- Intro to Coding defensive, offensive, preconditions, postconditions
- Intro to Debugging
- Intro to Profiling, Intro to Performance
- Intro to Code Review
-
Intro to Quality - QA, Quality Assurance, code quality, bugs, bug levels, metabugs
- Intro to Functional
- Intro to Computers memory, cpu, hardware, neuman, computer science, devices
- Intro to OFM
- Intro to Databases Intro to Database Migration ORM, ObjectRelationalMapping, Hibernate, JPA, ebeanorm
- Advanced in Databases - optimistic lock, pessimistic lock
- Intro to WebDevelopment - tcp, http
- Data Structures & money
- Intro to Virtualization
- Admin section
- Intro to Types value, record, case class, alias
- Intro to Layers - frontend,ui,ux
- Intro to Culture - teams, psychology, principles, behaviour
- Intro to 41 - aboriginal linux, google whitepapers
- Intro to Security - ssl, handshake, tsl, https, basic auth, tokens, refresh, jwt tokens, access, refresh
- Intro to Crypto
- Advanced
- Advanced Java
- Circuit Breaker, retry, bulkhead, RateLimit, resilience
- Immutable, purity, pure functions, functional style
- Identification Surrogate vs Natural Keys, database, rest, microservice
- Infrastructure devops, docker, containers, kubernetes, k8s, private cloud, continous deployment
- Resources
- Project Templates
- Ships
- Ship10 - 2021-Aug
- Ship 1 - 2017-May
- Ship 2 - 2017-June
- Ship 3 - 2017-July
-
Ship 4 - 2017-September
- Team 4
- Team 4 Reloaded
- Backlog 4
- Sprint 4.1 old
- Sprint 4.1 Home old
- Sprint 4.2 old
- Sprint 4.2 Home old
- Sprint 4.3 old
- Sprint 4.3 Home old
- Sprint 4.4 old
- Sprint 4.4 Home old
- Sprint 4.5 old
- Sprint 4.5 Home old
- Sprint 4.6 old
- Sprint 4.6 Home old
- Sprint 4.7 old
- Sprint 4.7 Home old
- Sprint 4.8 old
- Sprint 4.8 Home old
-
Non software
- Physical Tools - home tooling