Book Image

Building RESTful Web Services with .NET Core

By : Gaurav Aroraa, Tadit Dash
Book Image

Building RESTful Web Services with .NET Core

By: Gaurav Aroraa, Tadit Dash

Overview of this book

REST is an architectural style that tackles the challenges of building scalable web services. In today's connected world, APIs have taken a central role on the web. APIs provide the fabric through which systems interact, and REST has become synonymous with APIs. The depth, breadth, and ease of use of ASP.NET Core makes it a breeze for developers to work with for building robust web APIs. This book takes you through the design of RESTful web services and leverages the ASP.NET Core framework to implement these services. This book begins by introducing you to the basics of the philosophy behind REST. You'll go through the steps of designing and implementing an enterprise-grade RESTful web service. This book takes a practical approach, that you can apply to your own circumstances. This book brings forth the power of the latest .NET Core release, working with MVC. Later, you will learn about the use of the framework to explore approaches to tackle resilience, security, and scalability concerns. You will explore the steps to improve the performance of your applications. You'll also learn techniques to deal with security in web APIs and discover how to implement unit and integration test strategies. By the end of the book, you will have a complete understanding of Building a client for RESTful web services, along with some scaling techniques.
Table of Contents (13 chapters)

Exposing shipping details

GET requests can be used on OrdersController with an order ID so that order details can be consumed by third party sites for display. For example, many courier companies expose their APIs, which is used by other sites to display order, shipment, and tracking information.

As an example, let's check out our GET method OrdersController, which takes the ID as a parameter:

// GET: api/Orders/5
[HttpGet("{id}")]
public async Task<IActionResult> GetOrders([FromRoute] Guid id)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var orders = await _context.Orders.Include
(o => o.OrdersProducts)
.SingleOrDefaultAsync(m => m.Id == id);
if (orders == null)
{
return NotFound();
}
return Ok(orders);
}

Notice that the Include clause is used to include results from the OrdersProducts table. Let's now perform a quick...