# RESTful server (Web API) \[…]

[Controllers ](/annat/naetverk-och-internet/restful-server/controllers.md)| [Models/dataklasser](/annat/naetverk-och-internet/restful-server/models.md) | [Tester med RESTer](/annat/naetverk-och-internet/restful-server/tester-med-rester.md) | [Thunder](/annat/naetverk-och-internet/thunder.md)

Nedan är instruktioner för att skapa en enkel API-server som svarar på GET-anrop.

## Skapa projektet

Skapa projektets solution som vanligt, men välj **.NET Core Web API** som projekttyp istället för **Console application**.

### Rensa bort Weather Forecast-delarna

* Ta bort **WeatherForecast.cs**
* Ta bort **WeatherForecastController.cs**, som ligger i Controllers-mappen.

## Controller

Skapa en ny klass i Controllers-mappen. Döp den till SomethingController. Du kan byta ut "Something" mot något annat om du vill.

```csharp
using Microsoft.AspNetCore.Mvc;

[Route("api/[controller]")]
[ApiController]
public class SomethingController : ControllerBase
{
  [HttpGet]
  public ActionResult Get()
  {
    return Ok("Hej");
  }
}
```

Route och ApiController är *decorators*. De talar om att den här klassen är en API-controller och att den ska kopplas till url:en api/Something. \[controller] i Routen byts alltså ut automatiskt mot det som står innan Controller i klassens namn.

HttpGet är också en decorator, som talar om att metoden Get ska anropas när någon försöker hämta data från controllern (via url:en).

ActionResult är en klass som tillhandahålls av .Net och innehåller allt sådant som ett server-svar brukar behova innehålla.

Ok är en metod som returnerar ett färdigt ActionResult med HTTP-koden "ok". Resultatets meddelande blir det som anges som det första parametervärdet, i det här fallet alltså "hej".

## Köra och testa servern

### Gör så servern kan nås från andra datorer (behöver göras 1 gång)

* I Properties-mappen, öppna LaunchSettings.json
* Let rätt på "applicationUrl" en bit ner. Inte den som ligger i \[iissettings], utan den som ligger kring rad 25.
* Ändra localhost till \*
* Ändra också "launchBrowser" till false.

![](/files/-MITjmEFPGk-3SCYoIK6)

### Starta servern

* Tryck på F5 som vanligt.

### Titta på API:et i en webbläsare.

* Starta t.ex. Chrome medan servern körs.
* Gå till `https://localhost:5001/api/Something`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://csharp.progdocs.se/annat/naetverk-och-internet/restful-server.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
