{"id":341,"date":"2022-01-27T19:00:00","date_gmt":"2022-01-28T00:00:00","guid":{"rendered":"https:\/\/80bits.blog\/?p=341"},"modified":"2022-01-27T16:27:33","modified_gmt":"2022-01-27T21:27:33","slug":"net-6-minimal-api-rest","status":"publish","type":"post","link":"https:\/\/80bits.blog\/index.php\/2022\/01\/27\/net-6-minimal-api-rest\/","title":{"rendered":"Net 6. Minimal API Rest"},"content":{"rendered":"\n<p>Net 6 se liber\u00f3 no hace mucho tiempo, y entre sus muchas caracter\u00edsticas introdujeron la de &#8220;API minima&#8221; que junto con otras como <a href=\"https:\/\/devblogs.microsoft.com\/dotnet\/welcome-to-csharp-10\/#global-and-implicit-usings\" target=\"_blank\" rel=\"noreferrer noopener\">Global Usings<\/a>, hacen que ahora en Net 6 y C# sea m\u00e1s f\u00e1cil empezar a programar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"nodejs\"> NodeJS<\/h2>\n\n\n\n<p>Si han programado en NodeJS, la manera en que se puede empezar a crear un API es as\u00ed:<\/p>\n\n\n\n<div class=\"wp-block-image is-style-default\"><figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/80bits.blog\/wp-content\/uploads\/2022\/01\/minimalApiNodejs.png\" alt=\"Minimal API NodeJS\" class=\"wp-image-347\" width=\"603\" height=\"409\"\/><figcaption>Minimal API<\/figcaption><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-preformatted\">$ node index.js<\/pre>\n\n\n\n<p>Eso es lo \u00fanico que necesitamos en NodeJS para crear un GET en la siguiente ruta: http:\/\/localhost:5000\/api<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"net-6\">Net 6<\/h2>\n\n\n\n<p>En net core antes de Net 6 es, todo esto era un poco m\u00e1s complejo, ya que hab\u00eda que crear un archivo donde estuviera un m\u00e9todo <em>main<\/em> p\u00fablico y est\u00e1tico y luego dentro mandar a llamar a los namespaces y meter nuestro propio namespace, etc. pero con Net 6 ahora mismo quedar\u00eda algo as\u00ed:<\/p>\n\n\n\n<div class=\"wp-block-image is-style-default\"><figure class=\"aligncenter size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/80bits.blog\/wp-content\/uploads\/2022\/01\/minimalapinet6.png\" alt=\"Minimal api Net 6\" class=\"wp-image-354\" width=\"695\" height=\"300\"\/><figcaption>Minimal API<\/figcaption><\/figure><\/div>\n\n\n\n<pre class=\"wp-block-preformatted\">$ dotnet run<\/pre>\n\n\n\n<p>Incluso es mucho menos c\u00f3digo ahora que en NodeJS<\/p>\n\n\n\n<p>Hay una excepci\u00f3n y es que net al momento de ejecutar nos creara las carpetas bin y obj y dentro los respectivos archivos de toda la vida, tambi\u00e9n necesitamos el archivo .csproj, sin estos no se ejecuta nuestra aplicaci\u00f3n, en NodeJS necesitas solo un \u00fanico archivo donde esta ese c\u00f3digo y listo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"empezar-con-una-api-minima\">Empezar con una API Minima<\/h2>\n\n\n\n<p>El siguiente comando es para crear el proyecto y la estructura minima para un api rest, para ello deber\u00e1n tener el <a href=\"https:\/\/dotnet.microsoft.com\/en-us\/download\/visual-studio-sdks\" target=\"_blank\" rel=\"noreferrer noopener\">sdk version 6<\/a> de net core.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">$ dotnet new web -o minimalapinet6<\/pre>\n\n\n\n<p>El comando anterior crea los archivos necesarios para empezar con un proyecto api rest y lo m\u00ednimo indispensable. <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/core\/tools\/dotnet-new-sdk-templates#web\" target=\"_blank\" rel=\"noreferrer noopener\">Pueden ver la documentaci\u00f3n de esto aqu\u00ed.<\/a><\/p>\n\n\n\n<p>A partir de ese punto pueden comenzar a crear la estructura de un proyecto, meti\u00e9ndole seguridad, inyectando dependencias como un pool de conexi\u00f3n a base de datos con EF, etc.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Crea un API REST con el m\u00ednimo c\u00f3digo posible en Net 6 y c#, utilizando esta nueva caracter\u00edstica y los global using<\/p>\n","protected":false},"author":1,"featured_media":354,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[14,44],"tags":[17,55,56,45],"class_list":["post-341","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","category-netcore","tag-c","tag-dotnet","tag-net","tag-netcore"],"jetpack_featured_media_url":"https:\/\/80bits.blog\/wp-content\/uploads\/2022\/01\/minimalapinet6.png","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/posts\/341","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/comments?post=341"}],"version-history":[{"count":12,"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/posts\/341\/revisions"}],"predecessor-version":[{"id":358,"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/posts\/341\/revisions\/358"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/media\/354"}],"wp:attachment":[{"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/media?parent=341"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/categories?post=341"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/80bits.blog\/index.php\/wp-json\/wp\/v2\/tags?post=341"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}