I am a new developer researching different ways to make my application and hoped you might be able to help me out. I like AngularJS for the front and I'm deciding how to do the back-end.
My app will be a single-page app on the front and a JSON API on the back. It will do some heavy computation on the server using a library written in C++. The data should be pretty isomorphic and have a few joins so I think SQL would be better than NoSQL, but I don't really understand NoSQL.
1) Object-relational mapping
2) Serve status codes only as responses
3) Accept nested, XML, YAML & JSON parameters
4) Reload server-side code in development mode
5) Protection against IP Spoofing
6) Generate request IDs
Makes a unique request id available, sending the id to the client via the X-Request-Id header.
The unique request id can be used to trace a request end-to-end and would typically end up being part of log files from multiple pieces of the stack.
7) Exception redirection
Rescue exceptions and re-dispatch them to an exception handling application.
8) Cache responses
Caches responses with public Cache-Control headers using HTTP caching semantics.
9) Test for stale session
10) Automatically set an ETag on all string responses
This means that if the same response is returned from a controller for the same URL, the server will return a 304 Not Modified,
even if no additional caching steps are taken. This is primarily a client-side optimization; it reduces bandwidth costs but not server processing time.
11) Add a mutex around requests
If your application is not marked as threadsafe, this middleware will add a mutex around your requests
12) Add timer header to requests
The server adds a header to the request saying how long it took
13) Allow routing POSTs to other verbs
14) Support for signed and encrypted cookies
15) Best Standards
Tells Internet Explorer to use the most standards-compliant available renderer. In production mode, if ChromeFrame is available, use ChromeFrame.
16) Server-side, variable-verbosity logging
17) Protection against timing attacks
18) Configurable response caching
19) Serve URLs based on the route definitions
20) Serve headers only
21) Basic, Digest and Token Authentication
22) Instrumentation
triggers registered handlers for a variety of events, such as action processing, sending a file or data, redirection, and database queries. The payload of
each event comes with relevant information (for the action processing event, the payload includes the controller, action, params, request format, request
method and the request's full path).
23) Generators for server-side test and MVC parts
24) Database change management system
I'm also wondering about debugging and whether one back end has better debugging features than another.