From 53a0483ef11cce939b1df2f288563c888a1d0567 Mon Sep 17 00:00:00 2001 From: crupest Date: Sun, 14 Jun 2020 16:34:42 +0800 Subject: Many many bugs fix. 1. Add a way to test front end with mock page. 2. Unknown api returns 400 but not frontend page. 3. Fix a big bug that cause all data loss in database migration. --- Timeline/Routes/UnknownEndpointMiddleware.cs | 39 ++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Timeline/Routes/UnknownEndpointMiddleware.cs (limited to 'Timeline/Routes/UnknownEndpointMiddleware.cs') diff --git a/Timeline/Routes/UnknownEndpointMiddleware.cs b/Timeline/Routes/UnknownEndpointMiddleware.cs new file mode 100644 index 00000000..25ec563c --- /dev/null +++ b/Timeline/Routes/UnknownEndpointMiddleware.cs @@ -0,0 +1,39 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using System; +using System.Net.Mime; +using System.Text.Json; +using Timeline.Models.Http; + +namespace Timeline.Routes +{ + public static class UnknownEndpointMiddleware + { + public static void Attach(IApplicationBuilder app) + { + app.Use(async (context, next) => + { + if (context.GetEndpoint() != null) + { + await next(); + return; + } + + if (context.Request.Path.StartsWithSegments("/api", StringComparison.OrdinalIgnoreCase)) + { + context.Response.StatusCode = StatusCodes.Status400BadRequest; + context.Response.ContentType = MediaTypeNames.Application.Json; + + var body = JsonSerializer.SerializeToUtf8Bytes(ErrorResponse.Common.UnknownEndpoint(), new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }); + + context.Response.ContentLength = body.Length; + await context.Response.Body.WriteAsync(body); + await context.Response.CompleteAsync(); + return; + } + + await next(); + }); + } + } +} -- cgit v1.2.3