Implement simple communication between frontend and backend
This commit is contained in:
		
							parent
							
								
									a6cfa857fe
								
							
						
					
					
						commit
						c6621f2959
					
				
							
								
								
									
										1
									
								
								backend/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								backend/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,2 +1,3 @@ | ||||
| obj/ | ||||
| bin/ | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										15
									
								
								backend/Controllers/DispenserController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								backend/Controllers/DispenserController.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| 
 | ||||
| namespace backend.Controllers; | ||||
| 
 | ||||
| [ApiController] | ||||
| public class DispenserController : ControllerBase | ||||
| { | ||||
|     [HttpPost("Dispense")] | ||||
|     public void Dispense() | ||||
|     { | ||||
| 		// TODO send MQTT to arduino | ||||
| 		Console.WriteLine("Dispensing.."); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| @ -1,2 +1,27 @@ | ||||
| // See https://aka.ms/new-console-template for more information | ||||
| Console.WriteLine("Hello, World!"); | ||||
| var builder = WebApplication.CreateBuilder(args); | ||||
| 
 | ||||
| // Add services to the container. | ||||
| 
 | ||||
| builder.Services.AddControllers(); | ||||
| // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle | ||||
| builder.Services.AddEndpointsApiExplorer(); | ||||
| builder.Services.AddSwaggerGen(); | ||||
| 
 | ||||
| var app = builder.Build(); | ||||
| 
 | ||||
| // Configure the HTTP request pipeline. | ||||
| if (app.Environment.IsDevelopment()) | ||||
| { | ||||
|     app.UseSwagger(); | ||||
|     app.UseSwaggerUI(); | ||||
| } | ||||
| 
 | ||||
| app.UseCors(builder => builder.WithOrigins("*")); | ||||
| 
 | ||||
| //app.UseHttpsRedirection(); | ||||
| 
 | ||||
| app.UseAuthorization(); | ||||
| 
 | ||||
| app.MapControllers(); | ||||
| 
 | ||||
| app.Run(); | ||||
|  | ||||
							
								
								
									
										41
									
								
								backend/Properties/launchSettings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								backend/Properties/launchSettings.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | ||||
| { | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:63404", | ||||
|       "sslPort": 44315 | ||||
|     } | ||||
|   }, | ||||
|   "profiles": { | ||||
|     "http": { | ||||
|       "commandName": "Project", | ||||
|       "dotnetRunMessages": true, | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "applicationUrl": "http://localhost:5140", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "https": { | ||||
|       "commandName": "Project", | ||||
|       "dotnetRunMessages": true, | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "applicationUrl": "https://localhost:7228;http://localhost:5140", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "IIS Express": { | ||||
|       "commandName": "IISExpress", | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										8
									
								
								backend/appsettings.Development.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								backend/appsettings.Development.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | ||||
| { | ||||
|   "Logging": { | ||||
|     "LogLevel": { | ||||
|       "Default": "Information", | ||||
|       "Microsoft.AspNetCore": "Warning" | ||||
|     } | ||||
|   } | ||||
| } | ||||
							
								
								
									
										9
									
								
								backend/appsettings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								backend/appsettings.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | ||||
| { | ||||
|   "Logging": { | ||||
|     "LogLevel": { | ||||
|       "Default": "Information", | ||||
|       "Microsoft.AspNetCore": "Warning" | ||||
|     } | ||||
|   }, | ||||
|   "AllowedHosts": "*" | ||||
| } | ||||
| @ -1,10 +1,15 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | ||||
| 
 | ||||
|   <PropertyGroup> | ||||
|     <OutputType>Exe</OutputType> | ||||
|     <TargetFramework>net7.0</TargetFramework> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <Nullable>enable</Nullable> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|   </PropertyGroup> | ||||
| 
 | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.13" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" /> | ||||
|   </ItemGroup> | ||||
| 
 | ||||
| </Project> | ||||
|  | ||||
							
								
								
									
										2
									
								
								frontend/.env.example
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								frontend/.env.example
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | ||||
| VITE_API_URL=http://localhost:5140 | ||||
| 
 | ||||
							
								
								
									
										3
									
								
								frontend/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								frontend/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -26,3 +26,6 @@ coverage | ||||
| *.njsproj | ||||
| *.sln | ||||
| *.sw? | ||||
| 
 | ||||
| .env | ||||
| 
 | ||||
|  | ||||
| @ -1,85 +1,31 @@ | ||||
| <script setup> | ||||
| import { RouterLink, RouterView } from 'vue-router' | ||||
| import HelloWorld from './components/HelloWorld.vue' | ||||
| import { RouterLink, RouterView } from "vue-router"; | ||||
| 
 | ||||
| function dispense() { | ||||
| 	const xhr = new XMLHttpRequest(); | ||||
| 	xhr.open("POST", import.meta.env.VITE_API_URL + "/dispense"); | ||||
| 	xhr.send(); | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <template> | ||||
|   <header> | ||||
|     <img alt="Vue logo" class="logo" src="@/assets/logo.svg" width="125" height="125" /> | ||||
| 	<header> | ||||
| 		<!-- | ||||
| 			<nav> | ||||
| 				<RouterLink to="/">Home</RouterLink> | ||||
| 				<RouterLink to="/about">About</RouterLink> | ||||
| 			</nav> | ||||
| 		--> | ||||
| 
 | ||||
|     <div class="wrapper"> | ||||
|       <HelloWorld msg="You did it!" /> | ||||
| 		<h1>M&M Dispenser</h1> | ||||
| 
 | ||||
|       <nav> | ||||
|         <RouterLink to="/">Home</RouterLink> | ||||
|         <RouterLink to="/about">About</RouterLink> | ||||
|       </nav> | ||||
|     </div> | ||||
|   </header> | ||||
| 		<button @click="dispense">Dispense the m&m</button> | ||||
| 	</header> | ||||
| 
 | ||||
|   <RouterView /> | ||||
| 	<RouterView /> | ||||
| </template> | ||||
| 
 | ||||
| <style scoped> | ||||
| header { | ||||
|   line-height: 1.5; | ||||
|   max-height: 100vh; | ||||
| } | ||||
| 
 | ||||
| .logo { | ||||
|   display: block; | ||||
|   margin: 0 auto 2rem; | ||||
| } | ||||
| 
 | ||||
| nav { | ||||
|   width: 100%; | ||||
|   font-size: 12px; | ||||
|   text-align: center; | ||||
|   margin-top: 2rem; | ||||
| } | ||||
| 
 | ||||
| nav a.router-link-exact-active { | ||||
|   color: var(--color-text); | ||||
| } | ||||
| 
 | ||||
| nav a.router-link-exact-active:hover { | ||||
|   background-color: transparent; | ||||
| } | ||||
| 
 | ||||
| nav a { | ||||
|   display: inline-block; | ||||
|   padding: 0 1rem; | ||||
|   border-left: 1px solid var(--color-border); | ||||
| } | ||||
| 
 | ||||
| nav a:first-of-type { | ||||
|   border: 0; | ||||
| } | ||||
| 
 | ||||
| @media (min-width: 1024px) { | ||||
|   header { | ||||
|     display: flex; | ||||
|     place-items: center; | ||||
|     padding-right: calc(var(--section-gap) / 2); | ||||
|   } | ||||
| 
 | ||||
|   .logo { | ||||
|     margin: 0 2rem 0 0; | ||||
|   } | ||||
| 
 | ||||
|   header .wrapper { | ||||
|     display: flex; | ||||
|     place-items: flex-start; | ||||
|     flex-wrap: wrap; | ||||
|   } | ||||
| 
 | ||||
|   nav { | ||||
|     text-align: left; | ||||
|     margin-left: -1rem; | ||||
|     font-size: 1rem; | ||||
| 
 | ||||
|     padding: 1rem 0; | ||||
|     margin-top: 1rem; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
| 
 | ||||
|  | ||||
| @ -1 +0,0 @@ | ||||
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg> | ||||
| Before Width: | Height: | Size: 276 B | 
		Loading…
	
		Reference in New Issue
	
	Block a user