Я довольно новичок в ASP core webAPI. Надеюсь, вы, ребята, сможете мне помочь.

Я успешно использую HttpGet{id} - postman возвращает правильную информацию. Однако я хочу иметь возможность использовать "partNumber" в url.

ниже приведен рабочий метод получения id:

'''
    [HttpGet("{id}")]
     public async Task> GetModel(int id)
        {
        return await _context.Models.FindAsync(id);
        }
'''

Вот фактические параметры, по которым я хотел бы выполнить поиск:

```

[HttpGet("{PartNumber}")]
        public async Task> GetModel(int partNumber)
        {
          return await _context.Models.FindAsync(partNumber);
        }
        
```

Postman возвращает 404 not found в последнем случае, когда я должен видеть возвращенные данные.

Любая помощь будет очень признательна. спасибо

Ответы (2)

404 означает, что url запроса некорректен.

Здесь представлен весь мой код бэкенда, и мой контроллер содержит атрибут [Route("api/[controller]")]:

[Route("api/[controller]")]
[ApiController]
public class TestsController : ControllerBase
{
    [HttpGet("{partNumber}")]
    public async Task> GetModel(int partNumber)
    {

    }
}

Урл запроса должен быть:https://localhost:44371/api/tests/YourPortNumber(https://localhost:44371/api/tests/1).

Результат:

введите описание изображения здесь

Для возврата NoContent в postman, пожалуйста, установите точку останова и проверьте, содержит ли база данных такую запись с определенным partNumber:

 [HttpGet("{partNumber}")]
public async Task> GetModel(int partNumber)
{
      //set breakpoint here...
      var data = await _context.Models.FindAsync(partNumber);
      return await _context.Models.FindAsync(partNumber);
}

Результат:

введите описание изображения здесь

[HttpGet("{partNumber}")]
    public async Task> GetModel(int partNumber)
    {
      return await _context.Models.FindAsync(partNumber);
    }

Оболочка строки в маршруте должна соответствовать параметру

2022 WebDevInsider