If I have an API and I am the one consuming it, should the front-end be a separate project? I'm using Visual Studio ASP.NET Core 1.x.
2 Answers
An API is an interface first and foremost (and what the "I" in "API" stands for).
In general, it makes sense to have an interface be a separate component to decouple it from the implementation underneath. This also makes it easy to share: you can provide a lean library with only the interface specification, making it easier to use and understand. At runtime, the implementation can be dynamically loaded.
Another benefit is if the implementation is not closely coupled at the module level, it is possible to swap in an alternate implementation. This could be a "mock" and could be useful if, for example, the underlying "real" implementation touches databases or other persistence (or remote) systems that you do not want to mess with during testing.
Do you need to keep the interface separate? No. Is it a good thing? Yes.
-
I feel like your answer, while being technically correct in the end, discusses a whole different subject.– AndyJan 25, 2017 at 7:04
From a "the way Visual Studio does black magic so I could easily shoot myself in the foot" I would have a separate project in my solution at the very least, if not an entirely separate solution to keep things completely clean.