This repository contains a Web API sample built with Node.js and ASP.NET Core 1.0. A Angular 2 client is used to communicate with the APIs. A lot of things in this repo are covered by a blog series.
Both Node.js and ASP.NET Core 1.0 APIs are split into two projects:
- STS: Contains a Secure Token Service, which can generate and validate access tokens
- Node.js
- Uses oauth2-server for token generation
- ASP.NET Core 1.0
- Uses IdentityServer4
- Node.js
- Web API: Contains a Web API for manipulating customers.
- The following methods are supported. All methods need a valid access token, otherwise it will return a
401 Unauthorized
.HTTP GET api/customer/list
: Returns a list of all customersHTTP POST api/customer
: Creates a new customerHTTP DELETE api/customer/{id}
: Removes a customer
- Swagger support via
http://localhost:5000/swagger
- Both project can either use an InMemory storage or a PostgreSQL backend. Per default, they use PostgreSQL.
- Node.js:
- Switch the
service.configure(false)
totrue
here - Additionally Node.js supports MongoDB which can be switched here
- Default PostgreSQL settings:
- Host:
localhost
- Database name:
CustomerSampleNodejs
- Username:
CustomerSample
- Password:
CustomerSample
- Can be configured in server/index.js
- Host:
- Switch the
- ASP.NET Core 1.0:
- Switch the comments within
ConfigureDI
here - Default PostgreSQL settings:
- Host:
localhost
- Database name:
CustomerSampleVNext
- Username:
CustomerSample
- Password:
CUstomerSample
- Can be configured in Startup.cs
- Host:
- Switch the comments within
- Node.js:
- The following methods are supported. All methods need a valid access token, otherwise it will return a
You can either start both projects as Node.js or as ASP.NET Core 1.0. They won't work together, so you can not use Node.js STS and ASP.NET Core 1.0 Web API.
For a general admin UI to create users and databases, you can use pgAdmin, which works on all platforms.
The easiest way to use PostgreSQL on Mac OS X is by installing Postgres.app. Then use the pgAdmin to create the user and databases as shown above.
To install PostgreSQL on Windows you can use a graphical installer which can be downloaded here. It comes with pgAdmin, so you don't need to install it separately. After installation use pgAdmin to create the user and databases as shown above.
To install MongoDB, head over to the official website, download and install it regarding their documentation.
MongoDB is currently not supported for ASP.NET Core 1.0 Web API project, yet.
- Install Node.js > v5 .
- Execute
npm install
within the root of this repository to install all necessary dependencies. You will encounter somenpm err
ornpm warn
. That's okay, since this repository uses a lot beta versions. It will not break the application.
- ASP.NET 5.
- After installing ASP.NET 5 you need to execute
dnu restore
insrc/aspNetCore/STS
andsrc/aspNetCore/WebAPI
.
- STS: To start STS execute
node index.js
insrc/nodejs/STS
. It will then be accessible viahttp://localhost:5001
. - Web API: To start Web API execute
node index.js
insrc/nodejs/WebAPI
. It will then be accessible viahttp://localhost:5000
.
- STS: To start STS execute
dnx web
insrc/aspNetCore/STS
. It will then be accessible viahttp://localhost:5001
. - Web API: To start Web API execute
dnx web
insrc/aspNetCore/WebAPI
. It will then be accessible viahttp://localhost:5000
.
To start the Angular 2 Client, run npm run watch
within the root of the repository. You can access the client via http://localhost:8000
. The credentials are
- Username:
bob
- Password:
bob
Since both backends lack a support for user management, those credentials are the only one which are working. :-)
If you want to start the presentation yourself, you need to spin up a static http server (like node-static) in the presentation
directory.
This section contains notable third-party libraries.
- restify Used for Web API hosting.
- restify-cors-middleware An actually working middleware for handling cors in restify.
- swagger-restify Package for generating the swagger.json and hosting the swagger-ui.
- express Used for STS hosting.
- SequelizeJS Used to provide an ORM accessing the PostgreSQL database.
- EntityFramework7.Npgsql Allows using Entity Framework with PostgreSQL.
- IdentityServer4 Allows using a Identity Provider powered by IdentityServer4
- IdentityServer4.AccessTokenValidation Validates access tokens from IdentityServer4
- Swashbuckle.SwaggerGen Generates a swagger.json file
- Swashbuckle.SwaggerUi Shows the swagger-ui for a pretty view of swagger.json
- ppa-pawe: Added Node.js MongoDB support