Diskuze: ASP.NET Core Web API + web na jednom serveri
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, pošli kód metody Configure
v souboru
Startup.cs
.
Caw, je to len ten defaultni co ti vygeneruje VS...Nemam hotovi projekt, len sem to chcel odskusat nez sa doteho pustim. Je to tento:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
Vlastne mam len toto defaultne API a index.html z buttonem co volal na to API
abych to odskusal...Viem ze ked sem kupoval server tak tam byl index.html co sa
spustal tak sem ho tam skusil pridat len ze ci to pujde...Neslo tak sem skusil
dat do www zlozki ale taki nic...Pak mna napadlo do launchSettings.json nastavit
applicationUrl jak https://web.com/index.html ale poto sem sa uz
nedostal...Mozno app.endpoints zeby ale tam je len map na Controller alebo
RazorPage....Staci mi len odpichnut Ja to googlil ale v MS dokumentacii bylo len vitvoreni API a skusani
cez Postman, coz je len polka teho co potrebuju
Kukal sem aj defaultny projekt VS kde to je rovno vigenerovane z Angularem/
Reactem, ale strukture teho projektu fakt nerozumim Fakt sem sa snazil, len proste
nevim...Tak keby si vedel fakt diki
Nevím jestli to správně chápu, ale asi chceš aby se
index.html
vrátil vždy, když pro zažádané URL neexistuje api
endpoint?
V tom případě budeš potřebovat:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
endpoints.MapFallbackToFile("index.html");
});
MapFallbackToFile
zajistí, že se vrátí
index.html
, pokud se url nepodařilo namapovat na žádný api
endpoint, má to tedy nejnižší prioritu.
Pokusim sa to vysvetlit lespie: Chcem mat BE(to API) a FE(niaka Bootrat
sablona) na serveri...Ked niekto pride na pmoju stranku ma sa vrati index.html +
teda maju fungovat aj odkazy tipu www.example.com/contactus.html a pod...Zaroven ale ma
fungovat aj to ze ked vtom index.html budem mat JS z niakym volanim napr www.example.com/…leController tak aj to ma ist....Teraz
viem bud na ten server dat len API a tam sa defaultne vola controllers alebo len
tie staticke html subory kde sa vola ten index.html lebo to tak je asi
nastavene(ked tam nic ine neni, ziadna .net cor appka)...Ja potrebujem asi
nastavit v startup nieco take ze ak nenajde ten kontrolelr, hlada to v
statickich suboroch a teda ak pride niekto na www.example.com tak vrati ten index.html....Sorry ak to
visvetlujem fakt bolbo Len
aj ten project co mi to vigenereju ze .NET API + React, tak ked som nato pozeral
tak API a React su v jednom projekte...Ked to spustim tak mi to hend hodi
homepage a ten react tam ma index.html...Kod tam je takito:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");
});
app.UseSpa(spa =>
{
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseReactDevelopmentServer(npmScript: "start");
}
});
}
No len ja nemam SPA apku len sablonu zo statickima HTML-kama...Idem skusit to
co si mi poslal Ja len chcel
vedet ako sa to spravne/ v praxi roby ked sa spaja BE a FE v .NET Core... Ked
mam ASP.NET Core MVC alebo RazorPage dojde mi to take jak full-stack, tak preto
bich to chcel spravit stim API, potom bich si nekomu mohel nechat spravit FE, ja
si spravime BE a ked mi to posle len to spolu niak nahrajem na server..TO je moj
ciel
Chápu. Ale nevím co máš za server, jak je nastavený... Jaktože vůbec vrací html stránky, když ti nejede .net core apka? To tam je ještě nějaký proxy Apache/nginx server?
Pokud chceš servírovat statické soubory, tak přidej ještě
app.UseStaticFiles();
před app.UseRouting()
. To ti
api nerozbije - pokud se nenalezne soubor, spustí se routing do tvého api.
Potom když použiješ ten MapFallbackToFile("index.html")
tak se
ti navíc vrátí index v případě neexistujícího endpointu.
Budeš mít server co je tedy primárně API, jen pomocí
UseStaticFiles
nastavíš navíc posílání souborů html, css a
js (obsah wwwroot). Toť vše co potřebuješ. HTML, CSS i JS můžeš psát
zvlášť a volat api.
To prve: Ja fakt neviem...Moja znalost konci pritem ze to nahrajem cez FTP do
www direct O serveroch ja
neviem fakt nic
To druhe: Fakt dakujem! Este len jednu otazku, ono sa to takto aj roby? jako v
praxi... Zda sa mi to totiz v poslednej dobe logicke, to stakto striktne oddelit
a nemopuzit MVC napr, ale ne na kazdy web zas treba pouzivat niaky big FE jak
Angular a tak... Ja len ze ci nejdu skusat niaku slepu ulicku co v praxi pak
nepouziju...Zatat mam zasebu 4 stranky a vsetko MVC/ full-satck...Chcel bych
robyt uz prave len BE a šablony si kupovat a pak to prepajat.
Zobrazeno 9 zpráv z 9.